Просмотр полной версии : Как испльзовать onEnterFrame внутри класса?
Как испльзовать onEnterFrame внутри класса?
class X {
//Клип в котором будут располагаться все ресурсы X
private var container_mc:MovieClip;
//???????????????????????
var onEnterFrame;
//???????????????????????
public function X(target:MovieClip, depth:Number, x:Number, y:Number) {
container_mc = target.createEmptyMovieClip("container_mc" + depth, depth);
container_mc._x = x;
container_mc._y = y;
//???????????????????????
this.onEnterFrame = function() {
trace("yes");
container_mc._x++;
};
//???????????????????????
}
public function load_X(URL:String):Void {
container_mc.loadMovie(URL);
}
}
Так не работает.
Необходимо заставить двигаться экземпляр X.
Подскажите, как это сделать?
Метод onEnterFrame существует у классов-наследников MovieClip.
bjd, я в твоей прошлой теме привел тебе пример кода с onEnterFrame, что не получилось?
Метод onEnterFrame существует у классов-наследников MovieClip.
Значить необходимо дописать
class X extends MovieClip {...}
но это почему-то не помогло?
bjd, я в твоей прошлой теме привел тебе пример кода с onEnterFrame, что не получилось?
к сожалению onEnterFrame ни там ни здесь у меня не работает:(
bjd, чтобы у экземпляра класса был метод onEnterFrame, нужно наследоваться от MovieClip.
Мой пример наверное не заработал потому что... читай:
Help > Learning ActionScript 2.0 in Flash > Working with Movie Clips > Assigning a class to a movie clip symbol
import mx.utils.Delegate;
class X {
//Клип в котором будут располагаться все ресурсы X
private var container_mc:MovieClip;
public function X(target:MovieClip, depth:Number, x:Number, y:Number) {
container_mc = target.createEmptyMovieClip("container_mc" + depth, depth);
container_mc._x = x;
container_mc._y = y;
container_mc.onEnterFrame = Delegate.create( this, doEnterFrame);
}
public function doEnterFrame():Void{
trace("yes");
container_mc._x++;
}
public function load_X(URL:String):Void {
container_mc.loadMovie(URL);
}
}
Не хотите наследоваться от MC - применяйте Delegate.
Help > Learning ActionScript 2.0 in Flash > Working with Movie Clips > Assigning a class to a movie clip symbol
Не пойму две строчки:
-Select Advanced to show the options for Linkage, if they aren't already showing.
-Select the Export for ActionScript option, and type MoveRight in the Class text box. Click OK.
Переведите пожалуйста.
- Выбирите "Advanced", чтобы отобразить опции "Linkage", если они уже не отображены.
- Выбирите опцию "Export for ActionScript", и напечатайте "MoveRight" в текстовом поле Class. Кликните OK :)
Help > Learning ActionScript 2.0 in Flash > Working with Movie Clips > Assigning a class to a movie clip symbol
Спаибо, так как описано там всё работает, особенно помогли 5 и 6 строчки. Но что делать если клип создаётся программно внутри класса?
Что тогда делать вместо:
-Select Advanced to show the options for Linkage, if they aren't already showing.
-Select the Export for ActionScript option, and type MoveRight in the Class text box. Click OK. ?
Если создается мувиклип, программно, внутри класса, у него, так же, как и другого лубого мувиклипа, должен быть метод onEnterFrame.
PS: объясни, что ты хочешь сделать, в общих чертах.
Задача: класс Х.
При создании экземпляра которого создаётся пустой клип(container_mc).
Далее container_mc движется по некой траектории описаной внутри класса. Для упрощения container_mc._x++ , с частотой onEnterFrame.
Паралельно в него загружается некий клип Х (load_X(URL:String)).
class X extends MovieClip {
//Клип в котором будут располагаться все ресурсы X
private var container_mc:MovieClip;
public function X(target:MovieClip, depth:Number, x:Number, y:Number) {
container_mc = target.createEmptyMovieClip("container_mc" + depth, depth);
container_mc._x = x;
container_mc._y = y;
}
public function onEnterFrame() {
trace("yes");
container_mc._x++;
}
public function load_X(URL:String):Void {
container_mc.loadMovie(URL);
}
}
Так не работает.
В чём здесь проблемма?
А как вы создаете экземпляр класса X? Необходимо прописывать данный класс пустому клипу в библиотеке и создавать через attachMovie, а не через оператор new.
var my_x:X = X(attachMovie( linkage_id, depth ));
class X extends MovieClip {
private var container_mc:MovieClip;
public function X() {
super();
}
public function onEnterFrame() {
trace("yes");
container_mc._x++;
}
public function load_X(URL:String):Void {
container_mc.loadMovie(URL);
}
}
container_mc должен быть в клипе.
var my_x:X = X(attachMovie( linkage_id, depth ));
А что делать, в таком случае, с конструктором класса?
var my_x:X = X(attachMovie( myName, linkage_id, depth, initObject ));
Я пропустил один параметр (первый), сорри.
Все, что в initObject будет передано в класс и в конструкторе с этим можно будет работать. И с тем, что уже в клипе.
Например, container_mc можете создать в конструкторе, а можете просто запихать в клип.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.