Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.08.2008, 17:50
DhuMory вне форума Посмотреть профиль Отправить личное сообщение для DhuMory Найти все сообщения от DhuMory
  № 1  
Ответить с цитированием
DhuMory

Регистрация: 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.
Старый 05.08.2008, 17:55
Xpb7 вне форума Посмотреть профиль Отправить личное сообщение для Xpb7 Найти все сообщения от Xpb7
  № 2  
Ответить с цитированием
Xpb7

Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
Код:
var rocks:Array = new Array();

for (var i=0; i<10; i++)
{
    rocks[i]= new mc_Rock();
    rocks[i].x=100+i*20;
    rocks[i].y=20;	
    addChild(rocks[i]);
}
mc_Rock должен быть слинкован для использования as3 (Linkage...)

Старый 07.08.2008, 15:11
DhuMory вне форума Посмотреть профиль Отправить личное сообщение для DhuMory Найти все сообщения от DhuMory
  № 3  
Ответить с цитированием
DhuMory

Регистрация: Aug 2008
Сообщений: 8
Xpb7
Спасибо огромное. Заработало.

Старый 10.08.2008, 16:19
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 4  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
У Вас заработало, а у меня нет

здесь rocks - массив, а addchild, как я понял, должен делать дочерний объект.
Нам нужен MovieClip, а в примере получается Array, а не MovieClip.

Кроме того, как именно нужно "слинковать"?

Можно рабочий пример?

Старый 12.08.2008, 11:16
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 6  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
Спасибо, помогло. Я раньше не помещал картинки в библиотеку. Теперь вижу, что это очень удобно.

С помощью примеров разобрался, что и как линковать.

Ещё раз спасибо.

Старый 12.08.2008, 12:01
ulik вне форума Посмотреть профиль Отправить личное сообщение для ulik Посетить домашнюю страницу ulik Найти все сообщения от ulik
  № 7  
Ответить с цитированием
ulik
 
Аватар для ulik

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
Ну, вообще говоря, название темы не совсем точное. Одно дело создать 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.
Старый 12.08.2008, 15:41
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 8  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
копирование MovieClip - вот какая тема.

Лично меня интересовало в первую очередь как раз _визуальное_ копирование, то есть программное или при помощи действий юзера появление копии MovieClip в разных координатах окна.

Вот и всё.
Так что приведённые выше примеры не совсем подходят, в них нет ничего визуального и к MovieClip они мало адаптированы пока. Нужно поработать.

"objectsHolder:Array" - я так понял, этот массив может быть как массивом MovieClip`ов, так и массивом объектов? И это определяется автоматом? Или при чём тут Array?

Или это просто массив чисел? Вот что меня интересует.

Старый 12.08.2008, 16:57
ulik вне форума Посмотреть профиль Отправить личное сообщение для ulik Посетить домашнюю страницу ulik Найти все сообщения от ulik
  № 9  
Ответить с цитированием
ulik
 
Аватар для ulik

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
Почему это ?
Цитата:
в них нет ничего визуального
objectsHolder - это список, хранящий ссылки на childы, не важно чего.
Причем тут Array? Пример:
Вам надо создать 4 Sprite с именами "dog", "cat", "ball", "food".
Варианты:
1. создать 4 переменные и не парится (НО! А если их будет N ? )
2. перебирать их через getChildByName("имя") - вы запомните N имен?
Как раз для этого вы и создаете массив, который в себе хранит ссылки на объекты, чтобы обращаться к ним просто и легко.
Попробуйте все 3 варианта, думаю, вам станет ясно.
ps:

Код:
var arr:Array = new Array();
arr.push(new Sprite());
arr.push(new Object());
arr.push(new String("test"));
arr.push(new Number(10));

var numElements:int = arr.length;
for(var i:int = 0; i < numElements; i++)
{
  trace(i, arr[i], typeof(arr[i]));
}
__________________
Дизайн, как презерватив - каждому жмет по-своему © Я
мое: блог форум


Последний раз редактировалось ulik; 12.08.2008 в 17:01.
Старый 12.08.2008, 18:39
mad_god вне форума Посмотреть профиль Отправить личное сообщение для mad_god Найти все сообщения от mad_god
  № 10  
Ответить с цитированием
mad_god

Регистрация: Aug 2008
Сообщений: 40
Как я и говорил:
"objectsHolder:Array" - я так понял, этот массив может быть как массивом MovieClip`ов, так и массивом объектов? И это определяется автоматом."

Теперь ясно.

Хорошо, что не надо писать Array of Objects или Array of string

То есть, потом обращаемся просто objectsHolder[0], objectsHolder[1], objectsHolder[i], так?

а как приатачить это имя к DisplayObject`ам?
то есть чтобы начать показывать какой-то мувик или спрайт?

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.