Просмотр полной версии : Создание экземпляра класса
Есть класс:
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
Сейчас попробовал наследовать этот класс от 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);
}
}
ничего не изменилось
trace(my_loadMovie_class); - так это он тебе сам объект my_loadMovie_class пытается вывести а не trace("TESTTESTTEST");
попробуй без наследования "extends MovieClipLoader" убери и посмотри, если все ок, значит что то именно с наследованием класса
А что вы получить-то хотите вместо object?
во втором посте есть фраза: "ничего не изменилось"
Это значит, что после наследования ничего не изменилось, т.е. я пробовал и так и так.
"trace(my_loadMovie_class); - так это он тебе сам объект my_loadMovie_class пытается вывести а не trace("TESTTESTTEST");
"
а ты предлагаешь писать trace(trace("TESTTESTTEST")); ???
Эти выводы никак не связаны между собой.
А что вы получить-то хотите вместо object?
Не вместо, а в добавок к обджект вывод строки "TESTTESTTEST"
и загрузку внешнего клипа в созданный пустой клип.
Если пустой клип создаётся, значит создаётся объект класса и вызывается конструктор.
Если вызывается конструктор, то должен выполняться trace, но он не выполняется.
Если создаётс пустой мувик, то в него должен загрузиться внешний мувик, но он не загружается.
bettrrr, если надо что-то добавить в пост, надо отредактировать свой старый, а не новый писать.
В приведенном классе второго поста несколько ошибок, начиная с названия класса. Ну ещё неплохо было бы вызывать конструктор супер-класса. И непонятно, где используется target_mc.
"Ну ещё неплохо было бы вызывать конструктор супер-класса."
Какого супер-класса?
MovieClipLoader, конечно.
десятая строка:
var clipLoader:MovieClipLoader = new MovieClipLoader();
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');
class my_loadMovie{
function my_loadMovie (){
trace ("TESTTESTTEST");
}
}
- не работает
class test1{
function test1 (){
trace ("TESTTESTTEST");
}
}
- работает
Я думал, что это идеологически не правильное имя класса, а оно оказалось синтаксически не верным????
в мануале по AS2 нет функции super();
это точно для AS2?
Да, это точно для AS2.
Не называйте так классы. Вместо my_loadMovie (совершенно корявого названия) должно быть MyMovieLoader, например. Вмест test1 должно быть Test.
В хелпе есть все:
http://livedocs.adobe.com/flash/9.0/main/00001337.html
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.