|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1 13.12.12]
[++1 13.12.12] Регистрация: Aug 2012
Сообщений: 145
|
как сделать так чтобы после удаления объекта из массива он больше не использовался?
Код:
var I1F:Array = [a1,b1,c1] var I2F:Array = [a2,b2,c2] var I3F:Array = [a3,b3,c3] var I4F:Array = [a4,b4,c4] var I5F:Array = [a5,b5,c5] var I6F:Array = [a6,b6,c6] var IALLF:Array = [I1F, I2F, I3F, I4F, I5F, I6F] import flash.utils.Timer; import flash.events.TimerEvent; import com.greensock.*; var NZ:Array = new Array var BOT:Array = [new BOOTS()] for (var max_bot:int; max_bot<10; max_bot++) { if (max_bot != 0) { AB(max_bot) } } function AB(index_bot:Number) { var tim:Timer = new Timer (1000,1) var tim_floor:Timer = new Timer (1200,1) tim.addEventListener(TimerEvent.TIMER_COMPLETE, ACTIVE_BOT) tim.start() BOT.push(new BOOTS) addChild (BOT[index_bot]) function ACTIVE_BOT (e:TimerEvent):void { var MAX_STEP:int var thought_bot_floor:Array = new Array var thought_bot_room:MovieClip var STEP:Array = [1,2,3,4,5,6,7] var MAX_STEP_MAX = STEP[Math.floor( Math.random() * STEP.length )] var index_thought_bot_floor:Number = Math.floor( Math.random() * IALLF.length ) thought_bot_floor = IALLF[index_thought_bot_floor] var index_thought_bot_room:Number = Math.floor( Math.random() * thought_bot_floor.length ) thought_bot_room = thought_bot_floor[index_thought_bot_room] IALLF[index_thought_bot_floor].splice(index_thought_bot_room, 1); if (BOT[index_bot].x >= 274) { TweenLite.to(BOT[index_bot], 1, {x:500}); addEventListener (Event.ENTER_FRAME, FLORS) } if (BOT[index_bot].x <= 274) { TweenLite.to(BOT[index_bot], 1, {x:50}); addEventListener (Event.ENTER_FRAME, FLORS) } function FLORS (e: Event):void { if (BOT[index_bot].x == 500) { tim_floor.addEventListener(TimerEvent.TIMER_COMPLETE, room_bot) tim_floor.start() TweenLite.to(BOT[index_bot], 0.4, {y:thought_bot_room.y}); } if (BOT[index_bot].x == 50) { tim_floor.addEventListener(TimerEvent.TIMER_COMPLETE, room_bot) tim_floor.start() TweenLite.to(BOT[index_bot], 0.4, {y:thought_bot_room.y}); } } function room_bot(e:TimerEvent):void { MAX_STEP ++ removeEventListener (Event.ENTER_FRAME, FLORS) TweenLite.to(BOT[index_bot], 0.5, {x:thought_bot_room.x,y:thought_bot_room.y}); tim_floor.stop () tim.stop () bot_maind () } function bot_maind ():void { IALLF[index_thought_bot_floor].push(thought_bot_room) var index_thought_bot_room:Number = Math.floor( Math.random() * thought_bot_floor.length ) thought_bot_room = thought_bot_floor[index_thought_bot_room] IALLF[index_thought_bot_floor].splice(index_thought_bot_room, 1); if (MAX_STEP >= MAX_STEP_MAX) { tim.addEventListener(TimerEvent.TIMER_COMPLETE, ACTIVE_BOT) tim.start() } else { IALLF[index_thought_bot_floor].push(thought_bot_room) tim_floor.start() } } } } Создается 10 ботов, и они из массива IALLF выбирают массив, а из этого массива выбирают объекты к которым они должны идти, но как только боты выбирают этот объект, он сразу удаляется из этих массивов для того чтобы другие боты на ходили на этот объект. По прибытию бота на объект он снова добавляется в массив и он заново открыт для других ботов, а этот бот уходит на другой объект и все повторяется заново. Проблема: Помогите исправить проблему, что 2 бота встают на один и тот же объект? |
|
|||||
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
|
В таком коде не разобраться. Ставьте трэйсы, упрощайте и ищите момент, когда у вас сохраняется ссылка на бота. Если я правильно понял, в чем у вас траббл.
И еще: называйте ваши функции и переменные по-человечески.
__________________
hauts.ru |
|
|||||
Говоря объективно, этот код читать намного сложнее, чем код полученый от декомпилятора. Такое ощущение, что тут еще и обфускатором прошлись )
Придется либо переписать это, для начала, на более "человеко-читаемый" язык, либо разбираться с проблемами самостоятельно. |
|
|||||
[+1 13.12.12]
[++1 13.12.12] Регистрация: Aug 2012
Сообщений: 145
|
недавно проверил трейсами и оказалось что массив IALLF через некоторое время работы программы становится гораздо больше своего первоначального размара.
|
Часовой пояс GMT +4, время: 16:28. |
|
« Предыдущая тема | Следующая тема » |
|
|