Просмотр полной версии : Трабла с LoadMovie
Вот класс:
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.
}
}
}
Как мне загрузить клип в переменную??
Клипы в переменные не загружают, их грузят в другие клипы.
В приведенном коде в принципе все верно (за исключением onLoad, отсутствия типизации в некоторых местах и непонятно откуда берущихся переменных, типа path).
Тогда опишу задачу, мне нужно сделать масив клипов. Кусок кода из главного класа.
Переменная 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>
Вопрос: Мне нужен масив с клипами, и чтоб потом я их мог атачить куда мне нужно, что я не так сделал?
Мувиклипы через конструктор не создаются. Надо использовать attachMovie.
немного не понял (( они даже сдесь не создаются .. почемуто ((
if(ret.length>0){
this.clip.loadMovie(path+ret[0].attributes.filename);
trace(this.clip);//тут выводится ундефайнет!!!!!
}
Код оформлять не забываем.
Ещё раз объясняю: клипы с заданным классом создаются через attachMovie. В библиотеке должен быть мувик с указанным linkage прописанным классом DrawOps. Более того, в этом мувике должен присутствовать клип с именем clip. То, что вы указали, что такая переменная имеет тип MovieClip вовсе не значит, что этот клип создастся и будет присутствовать в классе.
хм .. тогда как мне все мувики в масив поместить, чтоб я потом мог их атачить в разные клипы, я окончательно запутался?? ((
Я предлагаю разобраться сначала с тем, как используются классы, расширяющие MovieClip.
Где про это можно прочитать, так как книги нет, пользуюсь только хелпой флеша?
В хелпе как раз и прочитаете, вместе с примерами.
Например:
http://livedocs.macromedia.com/flash/8/main/00001412.html
спасибо, разобрался .. ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.