2015-02-23 2 views
0

Итак, я создаю игру, где будет отображаться карта мира с активными странами в виде кнопок, а в верхней части экрана должен быть случайно всплывающий продукт, который должен быть присвоен определенной стране. Идея игры заключается в том, что игроку следует ответить, из какой страны этот продукт есть, если правильный ответ должен вывести другой продукт с назначенной страной.Action Script 3. Назначение видеоклипов другим видеороликам

Так что я должен создать каждую страну и продукты как MovieClips, только как назначить для каждой страны правильную страну? Если страна нажата, она должна проверить правильность продуктов.

Мне нужно поставить все страны в один массив и продукты в другой массив? Просто я смущен, как сделать эту проверку.

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

Я постараюсь вам помочь.

Во-первых, давайте создадим два объекта.

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

_countries назначает объекты в стране. Пример:

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

Итак, США содержит три объекта.

же для объекта:

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

Я хотел бы также добавить, что страна и продукты не обязательно должны быть струны. Они могут быть любыми, что вы хотите, например, MovieClips.

:) С уважением