Просмотр полной версии : loadMovie и setMask
Не работают они вместе - это так и должно быть? Так работает:
_root.attachMovie("Symbol","mov",1);
_root["mov"].setMask(_root["mask"]);
А так - нет
_root.createEmptyMovieClip("mov",1);
_root["mov"].loadMovie("test.swf");
_root["mov"].setMask(_root["mask"]);
А если должно быть - то как это обойти?
_root.createEmptyMovieClip("mov",1);
_root["mov"].loadMovie("test.swf",onLoad=function(){ this.setMask(_root["mask"]);
});
Оригинал написал(а) major
_root.createEmptyMovieClip("mov",1);
_root["mov"].loadMovie("test.swf",onLoad=function(){ this.setMask(_root["mask"]);
});
Мне на такой код выдается:
**Error**
Graphics.as: Line 44: There is no property with the name 'onLoad'.
im.loadMovie(image._url, onLoad = function(){} );
Я видимо что то не так делаю?
createEmptyMovieClip("mov",1);
maska._visible=0;
mov.loadMovie("test.swf");
this.onEnterFrame=function(){
var l=mov.getBytesLoaded();
var t=mov.getBytesLoaded();
if(t>0 && l==t){
mov.setMask(maska);
delete onEnterFrame;
}
}
зы: вариант с onLoad при загрузке из сети не проходит
Спасибо.
Мне просто показалось что styx удволетворен ответом major-а и значит у него что то cработало...
А кто нибудь может объяснить почему работает вот это:
ТЫК (http://chattyfig.figleaf.com/flashcoders-wiki/index.php?onLoad)
Вроде каждая по отдельности функция понятна... но кто вызывает оnLoad???
sol = function (func) { addOnLoadHandler(this, func);};
gol = function () { return MovieClip._onLoadHandler_[this];};
MovieClip.prototype.addProperty("onLoad", gol, sol); - то есть происходит переопределение onLoad как свойства мувиклипа
Наверное глупость спрашиваю, в общем то пока бардак в голове, но _visible вроде тоже свойство? Однако оно становится дефаултным при загрузке. Все переменные объекта тоже вроде исчезают... А onLoad мало того что остается, но еще при этом вызывается хотя вроде везде пишут что onLoad для динамических клипов не работает.
Что бы подитожить по пунктам:
1. пример из onLoad callback-а делает onLoad property, так?
2. В чем принципиальная разница между ними при загрузке mc?
3. Почему свойство не затирается как это происходит с _visible?
Спасибо,
Илья
видишь ли, вообще-то, onLoad - это обработчик событий , то есть условие, к которому можно привязать функцию. А в том примере, который ты указал, его переопределяют как свойство, то есть некий параметр с которым связаны сразу две функции - set и get. Первая вызывается при установке значения, а вторая - при запросе этого значения. Обрати внимание - MovieClip.prototype.addOnLoadHandler = function(path, func) {
if (MovieClip._onLoadHandler_ == undefined) {
MovieClip._onLoadHandler_ = {};
}
MovieClip._onLoadHandler_[path] = func;
}; То есть, если значение _onLoadHandler_ не определено, то ему присваивается пустой объект. Это называется инициализацией по умолчанию - то же самое происходит и со всеми свойствами мувиклипа при его первом появлении на таймлайне. Например, значение _visible по умолчанию - true, а значение _alpha - 100.
ЗЫ где ты там увидел callback?
callback возник из-за моего плохого знания терминологии. Я конечно имел ввиду обработчик событий
Я понимаю, что всем свойствам присваиваются значения по умолчанию при конструировании объекта. Вопрос собственно заключался в следующем:
#include <код по ссылке.as>
function doOnLoad() { }
mc = this.createEmptyMovieClip(...)
mc._visible = false;
mc.onLoad = doOnLoad;
mc.loadMovie(..)
и после этого mc.onLoad == doOnLoad, а _visible != false
Те свойство _visible меняется при загрузке, а свойство onLoad - нет
То есть, если значение _onLoadHandler_ не определено, то ему присваивается пустой объект.
На сколько я понимаю не вполне коректно сравнивать _onLoadHandler_ с _visible поскольку _onLoadHandler_ это свойство всех MovieClip а _visible существует у каждого мувика
кроме этого _onLoadHandler_ не инициализируется по умолчанию и никогда не равен пустому объекту - он инициализируется при первом присвоении onLoad, и после этого он не пустой.
Я понимаю, что всем свойствам присваиваются значения по умолчанию при конструировании объекта. Вопрос собственно заключался в следующем:
#include <код по ссылке.as>
function doOnLoad() { }
mc = this.createEmptyMovieClip(...)
mc._visible = false;
mc.onLoad = doOnLoad;
mc.loadMovie(..)
и после этого mc.onLoad == doOnLoad, а _visible != false
Те свойство _visible меняется при загрузке, а свойство onLoad - нет
после загрузки мувиклипа в таргет мувиклип таргет мувиклип переопределяется.На сколько я понимаю не вполне коректно сравнивать _onLoadHandler_ с _visible поскольку _onLoadHandler_ это свойство всех MovieClip а _visible существует у каждого мувика
Ты не понял - это пример инициализации по умолчанию
На сколько я понимаю не вполне коректно сравнивать _onLoadHandler_ с _visible поскольку _onLoadHandler_ это свойство всех MovieClip а _visible существует у каждого мувика.
Если метод добавляется с момощью Object.prototype ,то он появляется у всех объектов того типа, к которому он был прототипирован
кроме этого _onLoadHandler_ не инициализируется по умолчанию и никогда не равен пустому объекту - он инициализируется при первом присвоении onLoad, и после этого он не пустой а это что ?if (MovieClip._onLoadHandler_ == undefined)
Оригинал написал(а) Dindin
а это что ?if (MovieClip._onLoadHandler_ == undefined)
Это насколько я понимаю проверка существует ли переменная с именем _onLoadHandler_
Но по умолчанию (до вызова onLoad = ...) ее не существует ;-)
:D:D:D
if (MovieClip._onLoadHandler_ == undefined) {
MovieClip._onLoadHandler_ = {};
}
Так вот, если к моменту вызова она не существует, то мы ее ИНИЦИАЛИЗИРУЕМ.
MovieClip._onLoadHandler_ = {}; - как ПУСТОЙ ОБЪЕКТ. Тоесть ЗНАЧЕНИЕМ ПО УМОЛЧАНИЮ :D:D
Xelas Kac
11.11.2004, 16:11
Если подгружать маскируемый клип вроде понятно, а если перед эти маску еще грузить loadMovie - не работает... Или для нее тоже onLoad вызывать... Не осознаю механизма.
Используйте событие onData оно срабатывает когда происходит либо loadMovie либо attachMovie ;)
Xelas Kac
24.11.2004, 20:24
Что то не разберусь с onData для маски с одновременной загрузкой маскируемой картинки, может поподробнее с примером... :rolleyes:. Маска именно должна внешним файлом, attachmovie работает без проблем, но...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.