![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 23
|
Здравствуйте!
Опишу кратко задачу. Есть пользовательский объект типа myClass. Есть массив myClassBuffer, в который планируется вносить объекты типа myClass. При срабатывании определенного события тип myClass изменяется, а в буфер заносится его предыдущее значение. Вот грубый пример того, что нужно сделать: есть скажем спрайт отображения дерева. При нажатии на кнопку у дерева добавляется одна ветка, а в массив добавляется предыдущий спрайт этого дерева; Таким образом, если мы будем потом последовательно из массива читать мувики, получим последовательную хронологию действий. Вроде бы задача простая, но при попытке прочитать последовательно из массива все предыдущие спрайты все прочитанные спрайты имеют текущее значение. Вот небольшой кусочек того, что делаю: var mySprite:Sprite = new Sprite(); var currentSprite:Sprite = new Sprite() var mySpriteBuffer:Array = new Array(); //...здесь идет код отрисовки на mySprite нового элемента //...при срабатывании события заношу в буфер: currentSprite = new Sprite(); currentSprite = mySprite; currentSprite.name = String("Sprite" + mySpriteBuffer.length); mySpriteBuffer.push(currentSprite); //и вывожу в трассировщик trace(currentSprite.name); //1-й шаг: "Sprite0", 2-й шаг: "Sprite1", 3-й шаг: "Sprite2" и т.д. //...и далее после нескольких шагов читаю из буфера trace(mySpriteBuffer[0].name); //"Sprite2" trace(mySpriteBuffer[1].name); //"Sprite2" trace(mySpriteBuffer[2].name); //"Sprite2" |
|
|||||
|
Вы вставляете в массив ссылки на один и тот же объект, для того чтобы хранить разные объекты клонируйте оригинал перед изменением, как клонировать спрайт или mc можете поискать на форуме.
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
Регистрация: Jan 2012
Сообщений: 23
|
Так в коде. Я понимаю, что где-то накосячил, но я пробовал разные варианты для того чтобы решить данную задачу, пока не решил.
Цитата:
Последний раз редактировалось iNils; 27.01.2012 в 14:12. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 150
|
Реализация undo/redo через клонирование объектов - не самая лучшая идея. Собственно такая тема уже была.
http://www.flasher.ru/forum/showthread.php?t=174379 Сохранять лучше не сами объекты а произведенные изменения. |
|
|||||
|
Здесь Вы создаете новый спрайт, а следующей строкой присваиваете currentSprite старый спрайт mySprite. (на новый спрайт больше нигде нет ссылки, и доступ к нему никак не получить)
|
|
|||||
|
.
|
Вы курочите мой мозг. Тип объекта вроде как не может меняться в рантайме.
|
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
не понятно че вы хотите сделать, но может попробуйте вот так:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:53. |
|
|
« Предыдущая тема | Следующая тема » |
|
|