I have this code for a .as file called ScreenCategories
package {
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);
}
}
}
see where the 4* are... i have to replace that but i don't know what to write instead.
I have a php file called GetCategories.php where i connect to MySql and return my data as a JSON but i don't know what to do in this ScreenCategories.as file to call my data.
Please help :)
The following code might help:
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);
}
}
}
For more on Flash Player 11 JSON implementation, check here, and AS3CoreLib can be found here.