У меня достаточно много экранных объектов для управления во время выполнения, поэтому я в настоящее время использую массивы для управления ими.Но проблема в том, что у меня есть несколько типов экранных объектов (например, Tile, Npc и Building), которые в основном связаны с мувиклипами, связанными с библиотекой.Каждый экранный объект играет различную роль, где он будет проверяться при вводе кадра, в цикле.
Метод 2 звучит намного быстрее и расширяем, однако я беспокоюсь, если это повлияет на скорость проверки каждого экранного объекта во времявремя выполнения при отображении: массив увеличивается и, вероятно, делает его глючным
Итак, какой из следующих способов быстрее + менее глючным, и объясните, почему вы его выбрали.
Заранее спасибо.
Метод 1
var tiles:Array = new Array()
var npcs:Array = new Array()
var buildings:Array = new Array()
function createTiles(){
for(var i:Number=0; i<10; i++){
var t:Tile = new Tile() //Display object in the library
t.x = i * 50
t.y = i * 50
addChild(t)
tiles.push(t)
}
}
function createNpcs(){...}
function createBuildings(){...}
addEventListener(Event.ENTER_FRAME, loop)
function loop(e:Event){
for(var i:Number=0; i<tiles.length; i++){
//some codes
}
for(var j:Number=0; j<npcs.length; j++){
//some codes
}
for(var k:Number=0; k<buildings.length; k++){
//some codes
}
}
Метод 2
var displays:Array = new Array();
function createDispalys(){
for(var i:Number=0; i<10; i++){
var t:Tile = new Tile() //Display object in the library
t.x = i * 50
t.y = i * 50
addChild(t)
displays.push(t)
}
for(var j:Number=0; j<10; j++){
//some code
displays.push(t)
}
for(var k:Number=0;k<10; k++){
//some codes
displays.push(t)
}
}
addEventListener(Event.ENTER_FRAME, loop)
function loop(e:Event){
for(var i:Number=0; i<display.length; i++){
if(display[i] is Tile){
//some codes
}else if(display[i] is Npc){
//some codes
}else if(display[i] is Building){
//some codes
}
}
}