|
|
|||||
Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
|
опять про подгрузку мувика
привет... у меня непонятный трабл..
есть две флэшки(first.swf и second.swf), в одной есть мувик... в нем шагает человечек... этот клип множится посредством следующего кода: проверяем: - все работает. шагают 4 человечика. теперь во второй флешке (second.swf) создаю пустой мувик и подгружаю в него первую флэшку: проверяем, работает...но.... человечек остался только один... то есть дубликаты клипа гдето потерялись..... по идеи подгружаться должно ВСЁ содержимое first.swf..... однако этого не происходит... ссылки менял и на относительные и на асолютные... не помогло... в Чем дело и как исправить? Спасибо за внимание!
__________________
Блинчозафигняопятьзапалпробел!!! |
|
|||||
Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
|
исходники
__________________
Блинчозафигняопятьзапалпробел!!! |
|
|||||
Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
|
Вроде разобрался...
оказывается при подрузке в мувик из другой флешки прередается ее содержимое, а не оболочка... на эту мысл меня навело то обстоятельство, что при подгрузке цвет фона остается без изменения, скрипт "размножения" был у меня в корне... как бы в оболочке флешки, после того как я создал еще один мувик и все скрипты с мувиками засадил в него, все стало работать как надо... спасибо за помощь
__________________
Блинчозафигняопятьзапалпробел!!! |
|
|||||
Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
|
прикольно... но чет больно сложно...буду разбираться
__________________
Блинчозафигняопятьзапалпробел!!! |
|
|||||
Регистрация: Feb 2006
Сообщений: 580
|
var mn:MovieClip = this; var inter:Number = 0; var i:Number = 0; // function createNew():Void { mc = mn.attachMovie('mc_main', 'mc_main'+i, mn.getNextHighestDepth(), {_y:rand(90, 110), _alpha:rand(30, 100), _rotation:rand(-50, 50)}); mc._xscale = mc._yscale=rand(20, 150); trace(mc._width); trace(mc._x=Math.round((355/2)-(mc._width/2))); } // function timeCr():Void { i == 10 ? i=0 : i++; createNew(); mc.onEnterFrame = function():Void { if (this._currentframe == this._totalframes) { delete this.onEnterFrame; this.removeMovieClip(); } }; } // function rand(a:Number, b:Number):Number { return Math.round((b-a)*Math.random()+a); } // inter = setInterval(timeCr, 1000); 2. Функция которая генерирует случайное число от a до b. Числа a и b передаются в функцию извне как аргументы. 3. Функция которая аттачит на сцену мувик с бегущим человечком. Ссылка на новый мувик сохраняется в переменной mc. При вставке мувика, параметры _x, _y, _xscale, _yscale, _alpha, _rotation определяются случайным числом которое выдает функция rand(a,b)(мы определили эту функцию ранее). mc._xscale=mc._yscale чтобы сохранять пропорции человечка( можно и не сохранять). trace(mc._x=Math.round((355/2)-(mc._width/2))) - это я так, немного неуклюже определил точку вставки мувика, чтобы он вставлялся примерно в средине экрана, в зависимости от масштаба. 355 вероятно можно заменить на stage._width... function createNew():Void { mc = mn.attachMovie('mc_main', 'mc_main'+i, mn.getNextHighestDepth(), {_y:rand(90, 110), _alpha:rand(30, 100), _rotation:rand(-50, 50)}); mc._xscale = mc._yscale=rand(20, 150); trace(mc._width); trace(mc._x=Math.round((355/2)-(mc._width/2))); } - считает i(что в принципе и не нужно, но я как-то привык. Даже если бы мы вставляли все мувики с одним и тем же именем, flash все равно создает новые мувики, только обзывает их instance n) - запускает функцию создания нового мувика - удаляет отработавшие мувики. Отработавший, в данном случае, это мувик который дошел до своего последнего кадра. Как происходит удаление: для каждого нового мувика запускается событие onEnterFrame, с этим событием связана функция, которая отслеживает текущий кадр конкретного мувика. Если этот кадр равен последнему кадру, то данный мувик удаляется. Получается, что мы запускаем одновременно некоторое количество этих функций. Я проверял, производительность просаживается совсем незначительно. function timeCr():Void { i == 10 ? i=0 : i++; createNew(); mc.onEnterFrame = function():Void { if (this._currentframe == this._totalframes) { delete this.onEnterFrame; this.removeMovieClip(); } }; } |
|
|||||
Регистрация: Feb 2006
Сообщений: 580
|
/*mc.onEnterFrame = function():Void { if (this._currentframe == this._totalframes) { this.removeMovieClip(); delete this.onEnterFrame; } };*/ Тогда, любой экземпляр, когда дойдет до последнего кадра, самоуничтожается. По производительности оба варианта идентичны. Последний раз редактировалось pkfun; 20.11.2006 в 09:50. |
|
|||||
Регистрация: Feb 2006
Адрес: смольный
Сообщений: 15
|
это круто. Спасибо!
arachnofobia.rar
__________________
Блинчозафигняопятьзапалпробел!!! Последний раз редактировалось O'Fox; 20.11.2006 в 13:46. |
Часовой пояс GMT +4, время: 17:30. |
|
« Предыдущая тема | Следующая тема » |
|
|