|
|
|||||
Регистрация: Aug 2008
Сообщений: 8
|
копирование MovieClip ?
Допустим есть какой-то MovieClip, наприме, камушек mc_Rock.
Хотелось бы завести массив из таких объектов. Расставленных по экрану. Дублирование объектов, в АS3.0 работает совсем не так как в АS2.0. (Увы в поиски понятного мне хелпа по данному вопросу успеха не имели) import flash.display.*; var Rock:Array = new Array; for (var i=0; i<10; i++) { // цикл, хотим наплодить 10 камушков в ряд. Rock[i].x=100+i*20; // ставим камни в рядок Rock[i].y=20; Rock[i]=addChild(mc_Rock); } // цикл Отображается лишь самый последний "камень". Извините за тупой вопрос. Спасибо. Последний раз редактировалось DhuMory; 05.08.2008 в 18:08. |
|
|||||
Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
|
mc_Rock должен быть слинкован для использования as3 (Linkage...)
|
|
|||||
Регистрация: Aug 2008
Сообщений: 8
|
Xpb7
Спасибо огромное. Заработало. |
|
|||||
Регистрация: Aug 2008
Сообщений: 40
|
У Вас заработало, а у меня нет
здесь rocks - массив, а addchild, как я понял, должен делать дочерний объект. Нам нужен MovieClip, а в примере получается Array, а не MovieClip. Кроме того, как именно нужно "слинковать"? Можно рабочий пример? |
|
|||||
Регистрация: Aug 2008
Сообщений: 40
|
Спасибо, помогло. Я раньше не помещал картинки в библиотеку. Теперь вижу, что это очень удобно.
С помощью примеров разобрался, что и как линковать. Ещё раз спасибо. |
|
|||||
Ну, вообще говоря, название темы не совсем точное. Одно дело создать n-ое кол-во экземпляров класса и совсем другое - создать экземпляр класса, изменить в нем свойства, а потом создать клон уже измененного экземпляра класса.
Грубо говоря, вот ваш случай: var objectsHolder:Array = new Array(); var numObjects:int = 10; for(var i:int = 0; i < numObjects; i++) { objectsHolder.push(new Object()); } var user:Object = new Object(); user.login = "Ivan"; user.password = "qwerty"; var userCopy:Object = copyObject(user); function copyObject(sourceObject:Object):Object { var copyObject:Object = new Object(); for(var p:String in sourceObject) { copyObject[p] = sourceObject[p]; } return copyObject; } /* Результат: user - {} user.login = "Ivan" user.password = "qwerty" userCopy- {} userCopy.login = "Ivan" userCopy.password = "qwerty" */ Последний раз редактировалось ulik; 12.08.2008 в 12:06. |
|
|||||
Регистрация: Aug 2008
Сообщений: 40
|
копирование MovieClip - вот какая тема.
Лично меня интересовало в первую очередь как раз _визуальное_ копирование, то есть программное или при помощи действий юзера появление копии MovieClip в разных координатах окна. Вот и всё. Так что приведённые выше примеры не совсем подходят, в них нет ничего визуального и к MovieClip они мало адаптированы пока. Нужно поработать. "objectsHolder:Array" - я так понял, этот массив может быть как массивом MovieClip`ов, так и массивом объектов? И это определяется автоматом? Или при чём тут Array? Или это просто массив чисел? Вот что меня интересует. |
|
|||||
Почему это ?
Цитата:
Причем тут Array? Пример: Вам надо создать 4 Sprite с именами "dog", "cat", "ball", "food". Варианты: 1. создать 4 переменные и не парится (НО! А если их будет N ? ) 2. перебирать их через getChildByName("имя") - вы запомните N имен? Как раз для этого вы и создаете массив, который в себе хранит ссылки на объекты, чтобы обращаться к ним просто и легко. Попробуйте все 3 варианта, думаю, вам станет ясно. ps: Последний раз редактировалось ulik; 12.08.2008 в 17:01. |
|
|||||
Регистрация: Aug 2008
Сообщений: 40
|
Как я и говорил:
"objectsHolder:Array" - я так понял, этот массив может быть как массивом MovieClip`ов, так и массивом объектов? И это определяется автоматом." Теперь ясно. Хорошо, что не надо писать Array of Objects или Array of string То есть, потом обращаемся просто objectsHolder[0], objectsHolder[1], objectsHolder[i], так? а как приатачить это имя к DisplayObject`ам? то есть чтобы начать показывать какой-то мувик или спрайт? |
Часовой пояс GMT +4, время: 17:24. |
|
« Предыдущая тема | Следующая тема » |
|
|