PDA

Просмотр полной версии : Трабла с LoadMovie


MisterX
13.03.2007, 20:45
Вот класс:
import inc.func.xmlUtils;
class inc.controls.DrawOps extends MovieClip{
public var clip:MovieClip;
public function DrawOps(xml:XMLNode,path:String){
//parse image
var ret:Array=xmlUtils.findByTag(xml,"image");
if(ret.length>0){
trace(path+ret[0].attributes.filename);
this.clip.onLoad=function(a:Boolean){
trace("Loaded");
}
this.clip.loadMovie(path+ret[0].attributes.filename);
trace(this.clip); //Вот тут почемуто выводит undefined.
}
}
}

Как мне загрузить клип в переменную??

etc
13.03.2007, 20:58
Клипы в переменные не загружают, их грузят в другие клипы.
В приведенном коде в принципе все верно (за исключением onLoad, отсутствия типизации в некоторых местах и непонятно откуда берущихся переменных, типа path).

MisterX
13.03.2007, 21:10
Тогда опишу задачу, мне нужно сделать масив клипов. Кусок кода из главного класа.
Переменная path содержит путь к каталогу с картинками.

private var drawOps:Array = Array();
...
...
var ret:Array=xmlUtils.findByTag(main,"draw_ops");
for(var i:Number=0;i<ret.length; i++){
var tmp=new DrawOps(ret[i],this.path);
this.drawOps[tmp.attr.name]=tmp;
}
...
...
описание ф-и xmlUtils.findByTag
static function findByTag(xml:XMLNode,tag:String):Array{
var c:Number;
var _ret:Array = Array();
for(c=0;c<xml.childNodes.length;c++){
if(xml.childNodes[c].nodeName==tag){
_ret.push(xml.childNodes[c]);

}
}
return _ret;
}
Ну и сам класс DrawOps:
import inc.func.xmlUtils;
class inc.controls.DrawOps extends MovieClip{
public var clip:MovieClip;
public function DrawOps(xml:XMLNode,path:String){
//parse image
var ret:Array=xmlUtils.findByTag(xml,"image");
if(ret.length>0){
this.clip.loadMovie(path+ret[0].attributes.filename);
trace(this.clip);
}
}
}

аа...и пример ХМЛ
<draw_ops name="close_button">
<image filename="button-close.png" x="0" y="0" width="object_width" height="object_height"/>
</draw_ops>

Вопрос: Мне нужен масив с клипами, и чтоб потом я их мог атачить куда мне нужно, что я не так сделал?

etc
13.03.2007, 21:19
Мувиклипы через конструктор не создаются. Надо использовать attachMovie.

MisterX
13.03.2007, 21:24
немного не понял (( они даже сдесь не создаются .. почемуто ((
if(ret.length>0){
this.clip.loadMovie(path+ret[0].attributes.filename);
trace(this.clip);//тут выводится ундефайнет!!!!!
}

etc
13.03.2007, 21:28
Код оформлять не забываем.

Ещё раз объясняю: клипы с заданным классом создаются через attachMovie. В библиотеке должен быть мувик с указанным linkage прописанным классом DrawOps. Более того, в этом мувике должен присутствовать клип с именем clip. То, что вы указали, что такая переменная имеет тип MovieClip вовсе не значит, что этот клип создастся и будет присутствовать в классе.

MisterX
14.03.2007, 17:03
хм .. тогда как мне все мувики в масив поместить, чтоб я потом мог их атачить в разные клипы, я окончательно запутался?? ((

etc
14.03.2007, 17:09
Я предлагаю разобраться сначала с тем, как используются классы, расширяющие MovieClip.

MisterX
14.03.2007, 17:11
Где про это можно прочитать, так как книги нет, пользуюсь только хелпой флеша?

etc
14.03.2007, 17:38
В хелпе как раз и прочитаете, вместе с примерами.

Например:
http://livedocs.macromedia.com/flash/8/main/00001412.html

MisterX
15.03.2007, 00:17
спасибо, разобрался .. ;)