![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Подскажите, есть ли способ программно хаотично расположить объекты по всей ширине резинового флеша? При этом объекты не должны выходить за пределы видимой области.
Наподобие того, как реализовано тут http://www.norwegianoil40years.no/, только без анимации.
__________________
Достал уж всех своими глупыми вопросами... |
|
|||||
|
Модрон-ветеринар
|
А с упорядоченным, нехаотичным расположением по всей ширине "резинового" флеша получается? В чем загвоздка-то?
Берите ширину Stage.width и раскидывайте рандомно по ней ваши объекты. Последний раз редактировалось mooncar; 02.07.2010 в 18:45. |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
С объектами всё в порядке. Дело в том, что задача не раскидать объекты по сцене, а поместить на сцену 1 мувик (кроме него на сцене есть другие мувики), в котором много объектов. Вот именно их надо разбросать по всей ширине. То, что имеется на сцене, нормально «прорезинено».
__________________
Достал уж всех своими глупыми вопросами... |
|
|||||
|
Модрон-ветеринар
|
Добавляете на сцену ваш мувик, в котором много объектов и распределяете в нем их рандомно, с учетом Stage.width.
Задаете максимальное значение x и минимальное значение. Если ваш мувик-контейнер приаатачивается в начало координат (по умолчанию так), то минимальное будет 0. Ну и скооректировать их тоже нужно, учитывая размеры объектов, чтобы они вблизи границ не залезали на них. Трудность-то или непонимание на каком этапе? Последний раз редактировалось mooncar; 02.07.2010 в 19:22. |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
То есть, выходит, что для отдельного мувика тоже можно задавать значения Stage.width? Попробую...
__________________
Достал уж всех своими глупыми вопросами... |
|
|||||
|
Модрон-ветеринар
|
Да нет же. Stage.width (и Stage.height) используете при расчете рандомного разброса.
PS. Если мувиков будет много и их анимация не предполагается, во избежание тормозов также рекомендую отрисовать контейнер с ними в битмапу. PPS. Еще нюанс - вам надо определиться с одним моментом: либо разброс делать всякий раз заново при растяжении окна браузера (по вашей ссылке разброс идет вообще непрерывно), либо разброс сразу сделать достаточно большим по ширине и высоте, чтобы при растяжении окна браузера площадь гарантированно была покрыта объектами. Правда как быть при этом быть с "не должны выходить за пределы видимой области", я не знаю. Вам должно быть виднее, как это противоречие разрешить - ведь с одной стороны вы не хотите, чтобы объекты вылезали или находились на границе окна, с другой стороны, "резиновость" предполагает то, что пользователь в любой момент может растянуть / сжать окно, то есть изменить расположение его границ. Последний раз редактировалось mooncar; 05.07.2010 в 11:49. |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Сейчас сценарий несколько изменился: объекты могут выйти за пределы сцены. Объекты предполагаются анимированными (шарики будут дрожать мелкой дрожью). Придумали примерно так: есть несколько кнопок, при нажатии на одну из кнопок из центра сцены выскакивают шарики (что-то типа взрыва, как по ссылке), но останавливаются и просто висят, дрожжа.
Собственно, я могу сделать это и ручками, однако, придётся каждому шарику присваивать своё имя и прописывать в коде сцены, что как-то слишком громоздко. Другой вариант — поместить шарики в отдельный мувик, который потом и бросить на сцену. Вот тут-то и проблема: как распределить эти шарики по всей ширине сцены.
__________________
Достал уж всех своими глупыми вопросами... |
|
|||||
|
Модрон-ветеринар
|
Пример накидаю, обождите.
|
|
|||||
|
Модрон-ветеринар
|
Вот посмотрите. По нажатию на кнопку тут нет, зато все перестраивается по мере изменения размера окна.
По нажатию думаю, не очень сложно сделать будет. http://21multihinge.ru/test/rubber/rubber.html Stage.scaleMode = 'noscale'; Stage.addListener(this); var sWidth:Number = Stage.width ; var sHeight:Number = Stage.height ; this.onResize = stOnRezize; this.createEmptyMovieClip('balls', 0); setBalls(); function stOnRezize () { sWidth = Stage.width; sHeight = Stage.height; setBalls(); } function setBallsProp(obj) { obj._x = Math.random() * sWidth; obj._y = Math.random() * sHeight; obj._xscale = obj._yscale = Math.random() * 90 + 10; obj._rotation = Math.random() * 360; obj._alpha = Math.random() * 100; } function setBalls() { for (z = 1; z < 200; z++) { var tmp = balls.attachMovie('ball_id', 'ball' + z, z); setBallsProp(tmp); var fr:Number = Math.round(Math.random() * 14) + 1; tmp.gotoAndPlay(fr); } } Процессор грузится, конечно, прилично, но можно попробовать оптимизировать - например, отрисовать в битмапу кадры анимированного мувика. Главное тут, это: Последний раз редактировалось mooncar; 05.07.2010 в 13:18. |
|
|||||
|
[+4 24.05.10]
Регистрация: May 2003
Адрес: Москва
Сообщений: 186
|
Спасибо за пример! Сейчас попробую наколдовать что-нибудь :-)
__________________
Достал уж всех своими глупыми вопросами... |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:14. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|