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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.05.2007, 21:20
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 1  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
По умолчанию Как загрузить и размножить?

Хочется мне красивое решение следующей задачки стандартными средствами. И желательно, чтобы шустро работало.

Из внешнего источника загружается картинка (грубо говоря, текстура).
Она каким-то образом трансформируется (поворт, сдвиг и т.д.) и помещается на мувик.

После этого нужно наклепать произвольное количество копий данного мувика.

В AS 2.0 задача была решена несколько ректально: в мувик загружалась текстура, сам мувик трансформировался.
Затем создавался битмап, на нём рисовался битмап и уже этот битмап нашлёпывал везде, где надо.

Слегка почитав про AS 3.0 я было уже обрадывался, что есть более красивое решение (благо появились off-screen мувики и спрайты).
Но почитав хелп подробнее, я не обнаружил способа клонировать мувики.
duplicateMovie и attachMovie удалили, а вот никакого clone() взамен вроде бы не дали.

Ещё раз задачу, немного более формально.

Требуется отобразить на экране N спрайтов, имеющих разные x, y и "z", но одинаковое графическое содержимое.
Причём содержимое состоит из загружаемой графики.
Загрузка должна производиться только один раз.


Пока писал сообщение, родилась одна мысля - создать несколько спрайтов-контейнеров с разными координатами и в них добавлять спрайт-оригинал.
Т.е. что-то вроде такого:
Код:
// спрайт-оригинал. пока просто рисованный
var original = new Sprite();
original.graphics.beginFill(0xff0000,1);
original.graphics.drawRect(0,0,100,100);
original.graphics.endFill();

// создаём два контейнера
var container1 = new Sprite();
var container2 = new Sprite();

container1.addChild(original);
container2.addChild(original);

// один из них правее
holder1.x = 150;

// и отображаем
this.addChild(container1);
this.addChild(container2);
Ничего не вышло. Видимо, любой спрайт может принадлежать только одному спрайту.
А клонировать нельзя, да это бы и плохо сказалось на потреблении памяти...
Так есть ли какой-то способ?

Старый 17.05.2007, 21:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Что мешает клонировать битмап, как и было написано?

Старый 17.05.2007, 21:30
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 3  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Возникает ряд пробем:
1. Данные копии должны реагировать на щелчки мыши.
Поэтому нарисованные битмапы всё равно нужно было обёртывать в мувиклипы (да и ряду других причин).
Но вот hitZone по умолчанию у них получался прямоугольный.
А для того, чтобы сделать кастомный hitZone, опять же нужны однотипные динамические мувики. Т.е. возвращаемся к той же задаче.

2. Изображение можно зумить.
Пусть не произвольно, а в дискретные значения масштаба, но надо.
Поэтому, чтобы качество картинки было более-менее приемлимым, приходилось рисовать несколько разных битмапов - для разных зумов, и все их держать в памяти. Память порой кушалась ооочень сильно.

Старый 17.05.2007, 21:39
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Можно создать кучу наследников Sprite с одними и теми же параметрами.

Старый 17.05.2007, 21:53
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 5  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Ээээ... Что-то не понял идею.

Вот если рассмотреть выше приведённый пример.
Есть спрайт, на котором нарисован красный квадратик (или что-нибудь другое).

Нужно отобразить на экране, скажет, сотню таких спрайтов.
Причём:
1. не рисовать заново, а именно скопировать существующий.
2. должна быть возможность сделать их кликабельными.

Вобщем, нужно что-то вроде attachMovie, но мувик, который "аттачиться" находиться не в библиотеке, а создаётся динамически или загружается.

Старый 17.05.2007, 21:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Копия кушает столько же, сколько и новый созданный спрайт.
Что конкретно загружается?

Старый 17.05.2007, 22:05
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 7  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Да загрузка даже не так важна.
Допустим, не загружается, а просто рисуется через graphics.

Интересует именно вопрос: появились ли в AS 3.0 средства для клонирования динамически созданных мувиков?

P.S.
Но вообще загружается произвольная графика - как в виде .jpg так и в виде .swf
После этого она может быть ещё и как-то преобразована.


Последний раз редактировалось WindWalker; 17.05.2007 в 22:07.
Старый 17.05.2007, 22:14
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Хм, не знаю, я и в AS2 никогда не использовал duplicateMovieClip. Да и в AS3 другая идеология. В общем методов для клонирования таких мувиков нет.

Старый 17.05.2007, 22:52
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 9  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Цитата:
Сообщение от __etc
Хм, не знаю, я и в AS2 никогда не использовал duplicateMovieClip.
Я тоже (кроме самых первых поделок). Тут чисто до кучи привёл.

Цитата:
Да и в AS3 другая идеология.
Вот на это я и расчитывал...
Если бы можно было делать addChild() одного и того же клипа в разные клипы или если был бы clone(), то проблем бы не было.
Увы


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

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

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


 


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


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