操作脚本3.将影片剪辑分配给其他影片剪辑

时间:2015-02-23 06:35:46

标签: arrays actionscript-3 flash actionscript movieclip

因此,我正在制作游戏,其中将显示世界地图与活动国家/地区作为按钮,并且在屏幕顶部应随机弹出应分配到特定国家/地区的产品。游戏的想法是玩家应该从哪个国家回答这个产品,如果答案正确应该弹出与指定国家的其他产品。

所以我必须创建每个国家和产品作为MovieClip,只是如何分配给每个产品正确的国家?如果国家点击它应检查产品是否正确。

我需要将所有国家/地区的数组和产品放到其他数组中吗?只是我很困惑如何进行检查。

package 
{
    Import Object1;
    Import Object2;
    //all objects...
    Import Canada;
    //all countries...

    public class MapGame extends MovieClip
    {
    private var object1:Object1;
    private var object2:Object2;
    private var object3:Object3;
    private var object4:Object4;
    private var object5:Object5;
    //etc.....

    private var canada:Canada;
    private var lithuania:Lithuania;
    private var uk:UK;
    private var italy:Italy;
    //etc.....

        private function CreateMap()
        {
            //Here should be code to add countries as buttons
        }
        private function SpawnProduct()
        {
            //Here should be code to spawn random Object
        }
        private function CheckProducts()
        {
            // Here should be checking If products correct.
        }

也应该能够将多个产品分配到一个国家。

2 个答案:

答案 0 :(得分:0)

我会尽力帮助你。

首先让我们创建两个对象。

private var _countries:Object = {};
private var _objects:Object = {};

_countries将对象分配给该国家/地区。例如:

_countries[USA] = [object1, object2, object3];

所以,USA包含三个对象。

对象相同:

_objects[object1] = [USA, Italy, UK];

下一步。这是一个将对象分配给国家的功能,反之亦然。

public function assignCountryAndObject(country:MovieClip, object:MovieClip):void
{
    if (_countries[country] is Array && _countries[country].indexOf(object) == -1)
        _countries[country].push(object);
    else
        _countries[country] = [object];

    if (_objects[object] is Array && _objects[object].indexOf(country) == -1)
        _objects[object].push(country);
    else
        _objects[object] = [country];
}

所以你可以用这种方式调用这个方法:

assignCountryAndObject(country1, obj3);
assignCountryAndObject(country2, obj2);
assignCountryAndObject(country2, obj4);
assignCountryAndObject(country2, obj2);
assignCountryAndObject(country3, obj4);
assignCountryAndObject(country3, obj1);
assignCountryAndObject(country3, obj2);

接下来,两个函数用于获取对象的所有国家或国家/地区的所有对象。

public function getCountriesOfObject(object:MovieClip):Array
{
    return _objects[object];
}

public function getObjectsOfCountry(country:MovieClip):Array
{
    return _countries[country];
}

要检查,您可以使用下一个功能:

此功能检查对象是否属于国家:

public function isObjectBelongsCountry(object:MovieClip, country:MovieClip):Boolean
{
    return _objects[object].indexOf(country) != -1;
}

此功能检查国家是否属于某个对象:

public function isCountryBelongsObject(country:MovieClip, object:MovieClip):Boolean
{
    return _countries[country].indexOf(object) != -1;
}

答案 1 :(得分:0)

我建议使用一系列项目,其中包含有关国家及其产品的所有必要信息。该数组的每个元素都应包含与该国家/地区相关联的国家/地区名称和产品数组。这是我所说的一个例子:

package  
{
    import flash.display.MovieClip; 

    public class Main extends MovieClip 
    {
        //Array that holds a country name and the array of products associated woth that country 
        //(each item is an instance of Item.as)
        private var allItems:Array;

        public function Main() 
        {
            this.allItems = new Array();

            //Create all items
            var item1:Item = new Item("Italy", ["Pizza", "Pasta"]);
            var item2:Item = new Item("Lithuania", ["Šaltibarsčiai"]);

            //Push those items into main allItems array
            this.allItems.push(item1, item2);

            //This traces all information in allItems array
            for(var i:int = 0; i < allItems.length; i++)
            {
                trace("Country:", allItems[i].country + ", " + "Products:", allItems[i].products);
            }
        }
    }
}

和Item.as类:

package  
{
    import flash.display.MovieClip;

    public class Item
    {
        public var country:String;
        public var products:Array;

        public function Item(country:String, products:Array) 
        {
            this.country = country;
            this.products = products;
        }
    }
}

我还应该补充一点,国家和产品不一定是String的。它们可以是你想要的任何东西,比如说MovieClips。

Linkėjimai:)