PDA

Просмотр полной версии : Создание экземпляра класса


bettrrr
02.08.2007, 13:02
Есть класс:
class my_loadMovie{

var container_mc;

function my_loadMovie(target_mc:MovieClip, container_mc_str:String, depth:Number, loading_mc_path_str:String) {

trace("TESTTESTTEST");

container_mc = _root.createEmptyMovieClip(container_mc_str, depth);
var clipLoader:MovieClipLoader = new MovieClipLoader();
clipLoader.loadClip(loading_mc_path_str ,this.container_mc);
}

}
Я создаю экземпляр этого класса:
my_loadMovie_class=new my_loadMovie(this, "skin_container", 10, "test.swf");
trace(my_loadMovie_class);

в результате в output только: [object Object]
не выводит трэйс из конструктора класса.

Создаёт пустой клип Movie Clip: Frame=0 Target="_level0.skin_container", но не загружает в него test.swf

не могу понять что не так...

PS: Язык AS2

bettrrr
02.08.2007, 13:05
Сейчас попробовал наследовать этот класс от MovieClipLoader:
class my_loadMovie extends MovieClipLoader{

var container_mc;

function my_loadMovie(target_mc:MovieClip, container_mc_str:String, depth:Number, loading_mc_path_str:String) {

trace("TESTTESTTEST");

this.container_mc = _root.createEmptyMovieClip(container_mc_str, depth);
this.loadClip(loading_mc_path_str ,this.container_mc);
}

}
ничего не изменилось

zafod
02.08.2007, 13:13
trace(my_loadMovie_class); - так это он тебе сам объект my_loadMovie_class пытается вывести а не trace("TESTTESTTEST");
попробуй без наследования "extends MovieClipLoader" убери и посмотри, если все ок, значит что то именно с наследованием класса

etc
02.08.2007, 13:18
А что вы получить-то хотите вместо object?

bettrrr
02.08.2007, 13:20
во втором посте есть фраза: "ничего не изменилось"
Это значит, что после наследования ничего не изменилось, т.е. я пробовал и так и так.

"trace(my_loadMovie_class); - так это он тебе сам объект my_loadMovie_class пытается вывести а не trace("TESTTESTTEST");
"
а ты предлагаешь писать trace(trace("TESTTESTTEST")); ???
Эти выводы никак не связаны между собой.

А что вы получить-то хотите вместо object?
Не вместо, а в добавок к обджект вывод строки "TESTTESTTEST"
и загрузку внешнего клипа в созданный пустой клип.

Если пустой клип создаётся, значит создаётся объект класса и вызывается конструктор.
Если вызывается конструктор, то должен выполняться trace, но он не выполняется.
Если создаётс пустой мувик, то в него должен загрузиться внешний мувик, но он не загружается.

etc
02.08.2007, 13:39
bettrrr, если надо что-то добавить в пост, надо отредактировать свой старый, а не новый писать.

В приведенном классе второго поста несколько ошибок, начиная с названия класса. Ну ещё неплохо было бы вызывать конструктор супер-класса. И непонятно, где используется target_mc.

bettrrr
02.08.2007, 13:43
"Ну ещё неплохо было бы вызывать конструктор супер-класса."
Какого супер-класса?

etc
02.08.2007, 13:44
MovieClipLoader, конечно.

bettrrr
02.08.2007, 13:46
десятая строка:
var clipLoader:MovieClipLoader = new MovieClipLoader();

etc
02.08.2007, 13:50
class MyLoader extends MovieClipLoader {

private var _target:MovieClip;

public function MyLoader(target_mc:MovieClip, name:String, depth:Number, url:String) {
super();
trace('MyLoader created');
this._target = target_mc.createEmptyMovieClip(name, depth);
this.loadClip(path, this._target);
}
}

var loader:MyLoader = new MyLoader(this, 'target_mc', 10, 'test.swf');

bettrrr
02.08.2007, 14:01
class my_loadMovie{
function my_loadMovie (){
trace ("TESTTESTTEST");
}
}
- не работает


class test1{
function test1 (){
trace ("TESTTESTTEST");
}
}
- работает

Я думал, что это идеологически не правильное имя класса, а оно оказалось синтаксически не верным????


в мануале по AS2 нет функции super();
это точно для AS2?

etc
02.08.2007, 14:30
Да, это точно для AS2.
Не называйте так классы. Вместо my_loadMovie (совершенно корявого названия) должно быть MyMovieLoader, например. Вмест test1 должно быть Test.

В хелпе есть все:

http://livedocs.adobe.com/flash/9.0/main/00001337.html