Вход

Просмотр полной версии : вопрос на счет использования Enterframe


Fapser
09.01.2003, 16:18
Народ, делаю звездное небо с dublicateMovieClip и записываю такой код в звезду, эффект такой звезды мигают как угорелые, а я хочу сделать чтобы каждая звезда появлялась из альфы до 100% и обратно исчезала, вот:

onClipEvent(enterFrame){

duplicateMovieClip ("_root.zz.z", "z"+i, i)

eval("_root.zz.z"+i)._alpha=0;
eval("_root.zz.z"+i)._alpha=a;
a++;
eval("_root.zz.z"+i)._x=Math.random()*600+50;
eval("_root.zz.z"+i)._y=Math.random()*600+50;

}

я понимаю что enterframe щелкает каждый кадр, так может быть есть альтернатива?

Заранее благодарен.

Fapser
09.01.2003, 16:20
или я что-то не то делаю? :(

Max N Chubin_
09.01.2003, 16:31
не майся...
чесс слово не стоит так делать! Особенно если кроме неба у тебя будет еще что нть на экране! ;)
вообще игра с альфой дело тормозное, а када это происходит со множеством объектов то ваще караул!
Совет такой:
сделай в клипе анимацию звезды (мигание кадров на 10-30). потом делай duplicateMovieClip(), НО!!!
1 - duplicate сделай только один раз при старте и звезды будут мигать сами собой
2 - чтобы они не одновременно мигали вставь код:

duplicateMovieClip ("_root.zz.z", "z"+i, i)
eval("_root.zz.z"+i).gotoAndPlay(random(30));

где число "30" в random(30) - есть одщее число кадров в клипе звезды.

alber
09.01.2003, 16:40
Max!!! Ты меня слышишь. Загляни пожалуйста на мышиный вопрос.

Fapser
09.01.2003, 16:40
пробую

Fapser
09.01.2003, 16:43
мигание кадров на 10-30 -- то есть мигание, ?

Fapser
09.01.2003, 16:50
мигание типа 1 кадр со звездой, 2 - ой пусто, 3-тий со звездой, 4 пустой и т.д. до 10 -30???

Max N Chubin_
09.01.2003, 17:32
развеселил!
вот примерчик...

Fapser
09.01.2003, 17:38
и вот что получилось..:(

Max N Chubin_
09.01.2003, 17:52
мне шоб код отыскать пришлось открывать Movie Explorer :D :D :D

ну Бог с ней со структурой (хотя мой препод по алгоритмированию наверное застрелился бы от такого алгоритма. да так ему и надо! ;) )... ты используешь переменную i для создания нового экзапляра звезды. дык а наращивать то i где то надо??? и кол-во звезд тоже нужно регулировать и мигание клипа мягко говоря нервное...
короче смотри мой пример...
там все прозрачно...
кстати тут идея пришла...
делать звезды в пустом клипе и размещать их кругом. а круг потом потихоньку вращать...

Fapser
09.01.2003, 18:08
спасибо огромное Макс, видно еще пока нет виденья flash-a со стороны, пытаемся, вот вопрос:

nam="z"+t; < - это типа конкантенация?
scale=random(50)+50; - объясни эту запись, хотя интуитивно понимаю изменение размера сл. обр. от 50 до 100?

_root.zz.z.duplicateMovieClip(nam,t,

вот дальше не как в учебнике :( не понятно что делаешь только догадываюсь..
{_x:random(450),_y:random(450),_rotation:random(90),_xscale:scale,_yscale:scale});
_root[nam].gotoAndPlay(random(30));
}

Max N Chubin_
09.01.2003, 18:37
nam="z"+t; < - это типа конкантенация?
типа да. создаем имена (z1,z2,z3...)

scale=random(50)+50; - объясни эту запись, хотя интуитивно понимаю изменение размера сл. обр. от 50 до 100?
именно так. к числу 50 прибавляем случайное число в диапазоне от 0 до 50.

_root.zz.z.duplicateMovieClip(nam,t,вот дальше не как в учебнике не понятно что делаешь только догадываюсь..
{_x:random(450),_y:random(450),_rotation:random(90),_xscale:scale,_yscale:scale});
у duplicateMovieClip 2 вида записи см. мануал
я использую второй, в нем разрешается последним параметром в скобках {...} определить свойства и переменные дубликата объекта. я задаю здесь позицию клипа. его поворот и масштаб. форма записи такая:
_root.clip.duplicateMovieClip(новое имя, глубина,{свойство: значение}); вместо знака "=" используется двоеточие.

_root[nam].gotoAndPlay(random(30));
запускаю новый клип не с первого кадра а со случайного из 30 имеющихся.

См. вложение. Сделал вращение.
хе хе а все таки она вертится! ;)

efim
09.01.2003, 18:49
scale=random(50)+50; - объясни эту запись, хотя интуитивно понимаю


это рандом от 50 плюс 50 тоесть

_x:random(450) nj;тождественно _x=random(450)

тоесть так не надо перечислять к чему относитсяэто

к акждому свойству

опс :D :o опаздал

Max N Chubin_
09.01.2003, 19:02
scale=random(50)+50; - объясни эту запись, хотя интуитивно понимаю
есть задача - сделать звезды различающимися по размеру (типа эффект дальше, ближе). Нужно задать им различный масштаб. Я решил что от 50 до 100 % от оригинала. Теперь тебе задачка - напиши форулу для создания такого числа!

random(N) генерит случайное число в диапазоне [0;N) от нуля (включительно) до числа N (N не входит в интервал)

если бы я написал так:
scale=random(50);
то получил бы серию чисел от 0 до 50ти, но мне нужно от 50 до 100. значит нужно что сделать???? Прибавить полтинник scale=random(50)+50;

чесс слово это ж алфавит!

Дальше идем.
_x:random(450) nj;тождественно _x=random(450)
применительно ко второму варианту записи duplicateMovieClip тождество верно! хочу только внести ясность. В привычном виде выглядело бы так:
_root.clip.duplicateMovieClip("z"+t,t);
eval("_root.clip.z"+t)._x=random(450);
и т.д. для каждого свойства...
а у меня все компактно и главное связано с объектом. т.е. не ошибешься с именем ;) .

efim
09.01.2003, 19:12
макс это я так обьясняю

объясни эту запись, хотя интуитивно понимаю ничяйно скапировал не заметил все ок но все равно спасибо :) :)


сколько ошибок жуть :rolleyes:

Max N Chubin_
09.01.2003, 19:20
чего еще непонятно то?
уже все разложил с точностью до пол-бита!
:confused:

efim
09.01.2003, 19:29
ВСЕ У МЕНЯ ПУТЕМ У МЕНЯ ВОПРОСОВ ВООБЩЕ НЕ БЫЛО Я НЕ ПРАВЕЛЬНО ВЫРАЗИЛ СВОИ МЫСЛИ А ТЫ МЕНЯ НЕ ПОНЯЛ ВОТ И ВСЕ :confused: :(

Max N Chubin_
09.01.2003, 19:35
Ну и славно!
а то я уже достал пулемет и топор...


http://smilies.sofrayt.com/1/0/maniac.gifhttp://smilies.sofrayt.com/1/e/bigun.gif

Fapser
10.01.2003, 13:16
Мужики СПАСИБО - век живи, век учись...:)

знание Flash+воображение = 200% успеха, и удовлетворения

еще раз спасибки за ценный урок, а главное все понятно, как у Дениса...:)))))

Fapser
10.01.2003, 17:17
Макс последний вопрос в нижесдедующем:

_root.sky.attachMovie("zz",nam,t,{_x:x,_y:y,_rotation:random

(90),_xscale:scale,_yscale:scale});

_root.sky[nam].gotoAndPlay(random(30));

с тем как работает attachMovie и почему нет самой звезды в фильме я разобрался..:)

НО....но у меня кроме звезд на крутящемся звездном небе есть еще другие объекты на основной сцене (мувики), так вот сейчас звезды пролетают перед ними (поверх), это очень неестественно, так как все копии распологаются поверх оригинала, для того чтобы копии звезд были позади других мувов их надо заключать в мувик - > все копии будут поверх всех в мувике-крнтейнере, но ниже тех, кто на уровне мувика..вот:) так как мне это сделать?

я пробовал _root.createEmptyMovieClip("мув.контейнер",10);

не получилось...вот прошу твоего совета..
Заранее благодарен

Max N Chubin_
10.01.2003, 17:44
кинь свой исходник я поправлю.
можно на мыло (flashmax@flashmaster.ru)