因此,我正在制作游戏,其中将显示世界地图与活动国家/地区作为按钮,并且在屏幕顶部应随机弹出应分配到特定国家/地区的产品。游戏的想法是玩家应该从哪个国家回答这个产品,如果答案正确应该弹出与指定国家的其他产品。
所以我必须创建每个国家和产品作为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.
}
也应该能够将多个产品分配到一个国家。
答案 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:)