- Сообщения
- 33
- Реакции
- 0
Здравствуйте!
Делаю открытку со снегопадом. Скрипт снегопада нашел в интернете. Скрипт находится на основной сцене, запускается в середине открытки - там, где поставлен кадр со скриптом. На другом слое находится сам шарик с именем экземпляра "SnowFlake". На открытке в конце ролика есть кнопка "Повторить просмотр", при нажатии на которую происходит возврат к первому кадру и анимация начинается снова, но снегопад все равно продолжается. А нужно, чтобы он также останавливался и начался в середине открытки. Я так пониманию, если он был запущен программно, то и выключать его нужно программно. Перепробовал различные варианты со шкалой времени, но на снег реакции никакой. Хоть и совсем плохо разбираюсь в actionscript попробовал разные варианты кода, вроде:
или
или
возможно, пробовал другие коды
Пробовал эти строки вставлять в функцию, созданную автоматически через окно "Фрагменты кода":
Но, все мои предположительные строки кода не работали. Либо ошибка выдавалась сразу после запуска ролика, либо у же после нажатия на кнопку "Повторить просмотр".
Скрипт при нажатии на кнопку "Повторить просмотр":
Скрипт снегопада:
Делаю открытку со снегопадом. Скрипт снегопада нашел в интернете. Скрипт находится на основной сцене, запускается в середине открытки - там, где поставлен кадр со скриптом. На другом слое находится сам шарик с именем экземпляра "SnowFlake". На открытке в конце ролика есть кнопка "Повторить просмотр", при нажатии на которую происходит возврат к первому кадру и анимация начинается снова, но снегопад все равно продолжается. А нужно, чтобы он также останавливался и начался в середине открытки. Я так пониманию, если он был запущен программно, то и выключать его нужно программно. Перепробовал различные варианты со шкалой времени, но на снег реакции никакой. Хоть и совсем плохо разбираюсь в actionscript попробовал разные варианты кода, вроде:
Код:
snowflakes.stop();
Код:
snowflakes.stop(1);
Код:
SnowFlake.stop();
Пробовал эти строки вставлять в функцию, созданную автоматически через окно "Фрагменты кода":
Код:
function fl_ClickToGoToAndPlayFromFrame(event:MouseEvent):void
Скрипт при нажатии на кнопку "Повторить просмотр":
Код:
button_1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndPlayFromFrame);
function fl_ClickToGoToAndPlayFromFrame(event:MouseEvent):void
{
gotoAndPlay(1);
}
button_1.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds);
function fl_ClickToStopAllSounds(event:MouseEvent):void
{
SoundMixer.stopAll();
}
Скрипт снегопада:
Код:
var snowflakes:Array = new Array();
var snowflakeProps:Dictionary= new Dictionary(true);
var max_snowsize:Number = 0.04;
// Количество снежинок
var snowflakesCnt:Number = 40;
var oheight:Number;
var owidth:Number;
init();
function init():void {
// Задаем ширину и высоту области, где будет идти снег, она будет равна размерам нашей флэшки
owidth = 549;
oheight = 547;
for (var i:int=0; i<snowflakesCnt; i++) {
var t:MovieClip = new SnowFlake();//
t.name = "snowflake"+i;
t.alpha = .2+Math.random()*.9;
t.x = -(owidth/2)+Math.random()*(1.5*owidth);
t.y = -(oheight/2)+Math.random()*(1.5*oheight);
t.scaleX = t.scaleY=.5+Math.random()*(max_snowsize*5);
var o:Object = new Object();
//Скорость и горизонтальное перемещение снежинок
o.k = 1+Math.random()*4;
o.wind = -1.5+Math.random()*(1.2*2);
snowflakeProps[t] = o;
addChild(t);
snowflakes.push(t);
}
addEventListener(Event.ENTER_FRAME, snowFlakeMover);
}
function shakeUp():void{
for (var i:int=0; i<snowflakes.length; i++) {
var t:MovieClip = snowflakes[i] as MovieClip;
t.x = -(owidth/2)+Math.random()*(1.5*owidth);
t.y = -(oheight/2)+Math.random()*(1.5*oheight);
}
}
function snowFlakeMover(evt:Event):void {
var dO:MovieClip;
var o :Object;
if(visible && parent.visible){
for (var i:int = 0; i < snowflakes.length; i++) {
dO = snowflakes[i] as MovieClip;
o = snowflakeProps[dO];
dO.y += o.k;
dO.x += o.wind;
if (dO.y>oheight+10) {
dO.y = -20;
}
if (dO.x>owidth+20) {
dO.x = -(owidth/2)+Math.random()*(1.5*owidth);
dO.y = -20;
} else if (dO.x<-20) {
dO.x= -(owidth/2)+Math.random()*(1.5*owidth);
dO.y = -20;
}
}
}
}
Последнее редактирование модератором: