我有一个名为ScreenCategories的.as文件的代码
包{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class ScreenCategories extends Sprite {
private var lastButtonEndedY:int;
private var categories:Array;
// Constructor: Create an array of three categories
public function ScreenCategories()
{
lastButtonEndedY = 35;
/* I've stored three categories, and each maps to a differnt index of course (because it's an Array!):
1: "TV Shows"
2: "Movies"
3: "Games"
****In our real app, we would load in the categories from our database (via a JSON)
Hint: Saving the Objects into the array at the index that equals the ID is advised
*/
categories = new Array();
categories[1] = {id:1, category:"TV Shows"};
categories[2] = {id:2, category:"Movies"};
categories[3] = {id:3, category:"Games"};****
// 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);
}
}
}
看看4*在哪里。。。我不得不把它换掉,但我不知道该写什么。
我有一个名为GetCategories.php的php文件,在那里我连接到MySql并以JSON的形式返回我的数据,但我不知道在这个ScreenCategories.as文件中该怎么做才能调用我的数据。
请帮助:)
以下代码可能会有所帮助:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.net.*;
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();
}
else
{
/* I've stored three categories, and each maps to a differnt index of course (because it's an Array!):
1: "TV Shows"
2: "Movies"
3: "Games"
****In our real app, we would load in the categories from our database (via a JSON)
Hint: Saving the Objects into the array at the index that equals the ID is advised
*/
categories = new Array();
categories[1] = {id:1, category:"TV Shows"};
categories[2] = {id:2, category:"Movies"};
categories[3] = {id:3, category:"Games"};
initializeCategory();
}
}
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
//Method 1 - compatible to Flash Player 11 or above
categories = JSON.parse(jsonText) as Array;
//Method 2 - if you target Flash Player 9 and 10 as well,
// you need to include AS3CoreLib.swc in your project
//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);
}
}
}
有关FlashPlayer11JSON实现的更多信息,请查看此处,AS3CoreLib可以在此处找到。