загрузка объектов библиотеки по списку строк, AS3 - PullRequest
0 голосов
/ 03 марта 2010

Как загрузить объекты библиотеки по списку строк с помощью Flash и AS3?
Мне нужно лучше понимать списки строк, массивы и спрайты.

ЧТО ХОЧУ ДЕЛАТЬ
Загрузите врагов на сцену, используя список строк «Оранжевый шар, красный шар, зеленый шар и т. Д.»

ПОЯСНЕНИЯ
Уроки, которые мне дали, слишком простые или неполные. примеры, которые не объясняют используемые классы.

Операторы трассировки не показывают мне, как я получаю доступ к имени или классу объекта. Мне нужны примеры. Неупакованные классы предпочтительнее. Благодарю.

ЧТО Я ПОЛУЧИЛ РАБОТУ «Я знал, что перепутаю класс и имя»
СВОЙСТВА СИМВОЛА
имя они не являются конкретными, я называю мое noname "
класс пирамида

//Creates 10 enemies and trace statement
import flash.display.Sprite;
var sprites:Array = new Array();
for(var i:Number=0;i<10;i++){
    //var test:Sprite = new Sprite();
    var test:Pyramid = new Pyramid();
        sprites.push(test);
    addChild(test);
    test.name = "littlebox_"+ i
    trace(test.name)
    with(test){

        x=i*25;

       }
}

/////////////////////////////////////////////////////////////////////// 

/*debu's example*/
//Creates 10 enemies 
var enemyArray:Array = new Array(); 

for (var i:int = 0; i < 10; i++) 
{ 
   var noname:Pyramid = new Pyramid(); 
   noname.x = i*10; //this will just assign some different x and y value depending on i. 
   noname.y = i*11; 
   enemyArray.push(noname); //put the enemy into the array 
   addChild(noname); //puts it on the stage 
}

///////////////////////////////////////////////////////////////////////

//centered and trace statement
var sprite:Sprite;
var noname:Pyramid = new Pyramid; 
//var noname:Pyramid2 = new Pyramid2; 
sprite = new Sprite();
sprite.name = "Pyramid" + 1;
addChild( noname);
noname.x = stage.stageWidth/3;
noname.y = stage.stageHeight/3;
trace( getChildByName( "Pyramid" + 1 ) ); // [object Sprite]

альтернативный текст http://www.ashcraftband.com/myspace/videodnd/so___.jpg

ПРЕДЫДУЩАЯ МОДИФИЦИРОВАННАЯ

var enemyList:Object = new Object();
        //var enemy:Sprite = new Sprite();
var enemy:BadGuy = new BadGuy();
enemy.name = "BadGuy";
enemyList [enemy.name] = enemy;

//var enemyList:Object = new Object();  
//for (var i:int = 0; i < 10; i++) {
        //var enemy:Sprite = new Sprite(); 
//var enemy:BadGuy = new BadGuy(); 
//enemy.name = "BadGuy" + i;  
//enemyList [enemy.name] = enemy;  
//}  

//for (var i:String in enemyList){  
//var enemy:Sprite = enemyList[i]  
//do something to enemy sprite  
//}

ПОЖАЛУЙСТА, ПОСТАВЬТЕ БОЛЬШЕ В АРМАТУРЕ МАРШРУТА

1 Ответ

1 голос
/ 03 марта 2010

В этой ситуации я бы просто использовал обычный массив. Объявите это так:

var enemyArray:Array = new Array();

Тогда он готов принимать объекты. Затем создайте цикл for, как вы это сделали, чтобы добавить в массив столько врагов, сколько вы хотите, и дать им некоторую информацию о положении, а также добавить их в рабочую область:

//Creates 10 enemies
for (var i:int = 0; i < 10; i++)
{
   var enemy:Sprite = new Sprite();
   enemy.x = i*10; //this will just assign some different x and y value depending on i.
   enemy.y = i*11;
   enemyArray.push(enemy); //put the enemy into the array
   addChild(enemy); //puts it on the stage
}

Это поставит 10 вражеских объектов (которые вам нужно будет определить, я полагаю, вы знаете, как связать новый класс с объектом в библиотеке Flash IDE?) На сцене. Отсюда у вас есть массив, заполненный этими врагами, и вы можете перемещаться по нему, перемещая их, обнаруживая столкновения с ними, убивая их и удаляя их со сцены и т. Д.

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

Также обратите внимание, что это не загружает врагов на сцену с использованием списка строк , так как в этом нет особой необходимости - если только вы сначала не поместили расположение файлов с кучей изображений на HD использовать как игровые спрайты) в массиве как Strings; затем последовательно для того, чтобы загрузить их на сцену.

Надеюсь, это поможет, дайте мне знать, если у вас есть дополнительные вопросы, или если это не тот ответ, который вы искали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...