Flash

Apr. 12th, 2010 02:45 pm
[identity profile] booblecat.livejournal.com posting in [community profile] useful_faq


Имеется файлик Flash CS4. На полотне 300 одинаковых объектов, каждый отдельным слоем со своим таймлайном. Каждый из объектов должен «мигать», то есть с интервалом в кадр-другой изменять прозрачность со 100% до 0% и обратно.

Как сообщить мигание всем трёмстам объектам, не выставляя ключевые кадры для каждого вручную?

Фактически вопрос трансформируется в «как клонировать анимацию между разными объектами».

Подскажите, пожалуйста.

Я новичок во флэш. Гуглил с полчаса, ничего внятного не нашёл.

Date: 2010-04-12 08:01 am (UTC)
From: [identity profile] fergus-macdubh.livejournal.com
Я думаю, надо все это писать кодом. И сами объекты располагать и мигание их задавать.

Date: 2010-04-12 08:14 am (UTC)
From: [identity profile] fergus-macdubh.livejournal.com


var arr:Array = [];

for(var i:int = 0; i < 300; i++)
{
var obj:PicObject = new PicObject; // PicObject - your object class
obj.x = this.width * Math.random();
obj.y = this.height * Math.random();

addChild(obj);

arr.push(obj);
}

Вот так, например, можно добавить 300 объектов на экран :)

Date: 2010-04-12 08:21 am (UTC)
From: [identity profile] fergus-macdubh.livejournal.com
хмммм, это хуже.
Ну, можно присовить им instanceName и запихать в массив :) Хотя задолбаешься конечно ))

Date: 2010-04-12 08:20 am (UTC)
From: [identity profile] lely-princess.livejournal.com
а можно сделать один symbol, ему сделать анимацию, и потом добавить 300 экземпляров этого символа? (можно ли сделать так, чтобы анимация символа проходила только один раз - вот еще вопрос)

Date: 2010-04-12 08:22 am (UTC)
From: [identity profile] fergus-macdubh.livejournal.com
Можно. Только они ж не одновременно должны мигать наверное

Date: 2010-04-12 08:30 am (UTC)
From: [identity profile] fergus-macdubh.livejournal.com
Такая идея. Делаете это символом. В символе пишем:

var ticker:Timer = new Timer(1000);

ticker.addEventListener(TimerEvent.TIMER, onTicker);

function onTicker(event:TimerEvent):void
{
if(Math.random > 0.2)
return;

var tween:Tween = new Tween(this, 'alpha', 1, 0, 1, true);
}

Это должно их гасить. Надо там допилить чтоб обратно зажигались, но я думаю идея понятна.