0

我有一个名为 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 文件中调用我的数据。

请帮忙 :)

4

1 回答 1

0

以下代码可能会有所帮助:

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);
        }

    }

}

有关 Flash Player 11 JSON 实现的更多信息,请在此处查看,并且可以在此处找到 AS3CoreLib 。

于 2012-07-10T22:22:07.850 回答