我在 Flash 上有一个模拟移动应用程序的代码:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.*;
import flash.net.*;
import com.adobe.serialization.json.*;
public class ScreenCategories extends Sprite
{
private var lastButtonEndedY:int;
private var categories:Array;
private var dataUrl:String = "getCategories.php";
// Change this to false to use local static data instead;
private var useRemoteData:Boolean = true;
// Constructor: Create an array of three categories
public function ScreenCategories()
{
lastButtonEndedY = 35;
if ( useRemoteData )
{
loadCategories();
}
}
public function loadCategories():void
{
var request:URLRequest = new URLRequest(dataUrl);
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, categoryLoad_complete);
loader.load(request);
}
private function categoryLoad_complete(evt:Event):void
{
var jsonText:String = evt.target.data;
//Deserialize JSON
categories = JSON.decode(jsonText) as Array;
}
private function initializeCategory():void
{
// for each "category" in our list (Array)...
for (var count in categories)
{
// Create a button for each of the categories that exist in our Array
var aCategory:BtnCategory = new BtnCategory(categories[count].category);
// Add the BtnCategory to the stage
aCategory.x = 0;
aCategory.y = lastButtonEndedY;
aCategory.name = categories[count].id; // give it a unique name!
addChild(aCategory);
lastButtonEndedY += (aCategory.getHeight() + 1);
}
addEventListener(MouseEvent.CLICK, mouseClicked);
}
public function mouseClicked(e:MouseEvent)
{
removeEventListener(MouseEvent.CLICK, mouseClicked);
// trace the name of the button that was pressed, in this case - the category number!
var btnPressed:int = parseInt(e.target.name);
// if the category exists in the Array (ie. not undefined), then display that category!
if (categories[btnPressed] != undefined)
{
displayCategory(btnPressed)
}
addEventListener(MouseEvent.CLICK, mouseClicked);
}
// We want to go forward to see the list of products in this category, call back to Main.as so make that happen.
public function displayCategory(categoryId)
{
trace ("display product category:" + categoryId);
var par:* = parent;
par.displayCategory(categoryId);
}
}
}
但我收到以下错误:
**JSONParseError: Unexpected < encountered
at com.adobe.serialization.json::JSONTokenizer/parseError()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:704]
at com.adobe.serialization.json::JSONTokenizer/getNextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONTokenizer.as:206]
at com.adobe.serialization.json::JSONDecoder/nextToken()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:102]
at com.adobe.serialization.json::JSONDecoder()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSONDecoder.as:71]
at com.adobe.serialization.json::JSON$/decode()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/com/adobe/serialization/json/JSON.as:95]
at ScreenCategories/categoryLoad_complete()[/Users/rominamora/Documents/AOD/term 3/interactive design/assignment3/ScreenCategories.as:45]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()**