移动应用程序模型-如何通过JSON从MySQL加载类别


mobile app mock up - HOW TO LOAD CATEGORIES FROM MySQL via a JSON?

我有一个名为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可以在此处找到。