2013-09-10 4 views
0

У меня будет какая-то задача для пользователя, поэтому я сделаю массив (ложное, ложное, ложное, ... количество заданий), и каждый элемент станет истинным при завершении, поэтому я буду знать, когда все будет завершено, а ведьма все еще не завершена. Обычно я создаю int, чтобы считать задачи при создании и уменьшаться, но на этот раз мне нужно контролировать каждый элемент (вы не выполнили этот ...), а не только глобальный прогресс.AS3 Существует ли простой способ создания этого массива?

Итак, я получил только ряд задач:

var Ctrl:Array = new Array(); 
for(var i=0; i<numberOfTasks; i++){ Ctrl.push(false); } 

Если у меня есть много задач, таким образом, может занять некоторое время заморозить выполнение. Есть ли какой-то «автоматический» способ?

ответ

2

Вы также можете создать массив и проверить, если массив [задача] не определена, он не был установлен, и его для вас равен ложным.

var ctrl:Array = new Array(); 
var maxTasks:int = 100;// doesnt matter here 
var tasksComplete:int = 0;// if You dont like to loop each time 
function completeTask(id:int):void{ 
    ctrl[id] = true; 
    tasksComplete ++; 
} 
function isTaskComplete(id:int):Boolean{ 
    return ctrl[id]?true:false; 
} 
+0

Это работает в моих тестах, и это простой способ, лучшее решение IMO. – Gustavo

1

Вы можете использовать словарь вместо Array.

Как это

var dic:Dictionary = new Dictionary(); 

var task:Task = new Task(); 
task.addEventListener(Event.Complete, onTaskComplete); 
dic[task] = false; //you will set false value only the task executes 
task.execute(); 

private function onTaskComplete(e:Event):void { 

    var task:Task = e.target as Task; 

    dic[task] = true; 

    //check the dic if all tasks are finished 
} 
+0

Это швы интересные, я попробую, понимая это ... – Gustavo

+0

Откуда у вас была задача? И последнее замечание о проверке «дика» не такое же, как то, что ОП пытается избежать? – chadiik

Смежные вопросы