![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2005
Сообщений: 7
|
Пожалуйста, дайте ссылочек на статьи о создании пользовательских классов в AS2, и вообще как они там работают?
Реально ли сделать чтоб MovieClip наследовал класс или нужно создавать его экземпляр(класса) и пользоваться методами, передающими (в параметрах) сам клип? (надеюсь кто-нибудь понял )Задача: есть несколько клипов с различным графическим содержанием, но двужутся они практически одинаково. Хочу: написала класс, определяющий основные правила их движение по полю, хочу чтоб они его наследовали, каждый со своими прибавками, включающие в себя обработчики событий (внутри обработчиков должны использоватся методы класса-родителя). Буду бесконечно благодарна, любому совету!!! любой ссылке!!! |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 7
|
Или почему внутри обработчика "не видно" функции этого же класса, например,
class ball { private var old_x, old_y:Number; private var St:Array; public function CoordinateToCollRow(){ .....} public function clip_move(clip:MovieClip):Void { var left:Number = clip._parent.left; .......... clip.onPress = function() { this.swapDepths(this._parent.getNextHighestDepth()); this.startDrag(false, left, top, right, bottom); ..... как внутри этого .onPress использовать функции из этого класса???? например, CoordinateToCollRow??? (this - меняется, свои фкц не видит) }; } |
|
|||||
|
маленький пример:
class MovieUtils {
public static function applyClassTo (movie:MovieClip, Class:Function):Boolean {
if ((movie = MovieClip (movie)) != null) {
movie.__proto__ = Class.prototype;
movie.constructor = Class;
movie.constructor.apply (movie);
return true;
} // end if
return false;
}
public static function createEmptyClassMovie (Class:Function, parent:MovieClip, name:String, depth:Number):MovieClip {
var mc:MovieClip = null;
if (MovieClip (parent) != null) {
mc = parent.createEmptyMovieClip (name, depth);
return (applyClassTo (mc, Class)) ? mc : null;
} // end if
return mc;
}
class Factory {
private var __target:MovieClip = null;
public function Factory (target:MovieClip){
__target = target;
}
public function build ():Void {
for (var i:Number = 0; i < 4; i++) {
var mc:CustomMovie = CustomMovie (
MovieUtils.createEmptyClassMovie (CustomMovie, __target, 'item' + i, i));
mc._x = 105 * i;
mc._y = 0;
} // end if
}
}
class CustomMovie extends MovieClip {
public function CustomMovie () {
beginFill (0x000000, 100);
moveTo (0, 0);
lineTo (100, 0);
lineTo (100, 100);
lineTo (0, 100);
lineTo (0, 0);
endFill ();
onRollOut ();
}
public function onRollOver ():Void {
_alpha = 20;
}
public function onRollOut ():Void {
_alpha = 100;
}
}
}
__________________
:::::::::::: sump :::::::::::: |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 7
|
сформулирую проблему конкретнее:
class Ball extends Sphere{ private clip:MovieClip=null; ..... public function Ball(){} public function someFun(){ trace(this);} .... public function MyProblem(outclip){ this.clip=outclip; clip.onPress=function(){ someFun(); //в неё даже не заходит, не видит ((((( } clip.onEnterFrame(){ this.someFun(); //здесь тоже самое } } } //в _root var ball:Ball=new Ball(); // в неком клипе из моей библиотеки потом из него attach`уются еще несколько клипов! _root.ball.MyProblem(this); если обработчики clip вне этой функции(MyProblem), выдает ошибку неразрешимая в классе формулировка (не могу же я еще и MovieClip наследовать)! плиз, подскажите, кто знает как сделать это? [This statement is not permitted in a class definition. clip.onRelease = function() { ] примечание, все функция наследованные в этих обработчиках clip`а тоже не видны! |
|
|||||
|
Естественно не увидит он someFun ();
import mx.utils.Delegate; попробуй clip.onPress = Delegate.create (this, someFun);
__________________
:::::::::::: sump :::::::::::: |
|
|||||
|
Регистрация: Dec 2005
Сообщений: 7
|
запугали ребёнка Delegate`ми всякими, а надо было ссылку на this сохранить до входа в обработчик (((,
типа var o=this; clip.onPress=function() {o.someFun();} и заработало как надо ))) всё равно спасибо огромное!!! |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|