Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   [AS2] Как прописать OnEnterFrame? (http://www.flasher.ru/forum/showthread.php?t=73641)

Gaen 28.12.2005 05:16

[AS2] Как прописать OnEnterFrame?
 
Внешний класс:

Код:

class MyClass{

        function MyClass(){
                this.onEnterFrame=function(){;        };
        }

}

Выдаёт: There is no property with the name 'onEnterFrame'.

...как сделать правильно?

Antares 28.12.2005 07:39

Перевожу: нет члена класса с именем OnEnterFrame

Очевидный выход -- создать его, либо наследовать у Мувилкипа (плохая техника), либо делегировать в классе, который содержит ссылку на мувиклип (лучшая техника).

Читайте Колина Мука...

Gaen 28.12.2005 08:22

Тьфу ты, забыл приписать extends MovieClip. Но всёравно спасибо. А про Колина Мука поподробнее...

ir73 28.12.2005 13:12

Цитата:

Сообщение от Antares
Перевожу: нет члена класса с именем OnEnterFrame

Очевидный выход -- создать его, либо наследовать у Мувилкипа (плохая техника), либо делегировать в классе, который содержит ссылку на мувиклип (лучшая техника).

Читайте Колина Мука...

Вот вы все время не рекоммендуете наследовать мувиклип. А как тогда обходитша с классами, которые мы присваимаем мувикам через Линкаге? Они же должны быть все, как я понимаю , extends MovieClip

Antares 28.12.2005 13:55

Цитата:

Сообщение от ir73
Вот вы все время не рекоммендуете наследовать мувиклип. А как тогда обходитша с классами, которые мы присваимаем мувикам через Линкаге? Они же должны быть все, как я понимаю , extends MovieClip

Это опять же, если мыслить только как "объект сам должен иметь методы"... А что если объект имеет ссылку? Мы создаем экземпляр класса, конструктору (либо методу) передаем ссылку на его визуальную компоненту и все.

В крайнем случае никто не отменял createClassObject.

Базовый класс выглядит так:
Код:

import visual.scene.IVisualObject;
import mx.transitions.Tween;
import mx.transitions.easing.Elastic;

/**
 * @date        26.07.2003
 * @author        Michael Klishin       
 * @version    1.0
 **/
class visual.scene.VisualObject implements IVisualObject
{
        private var __viewport:MovieClip;
       
        function VisualObject( mc:MovieClip )
        {
                __viewport = mc;
        }
       
       
        /**
        *
        * @usage 
        * @param  x
        * @param  y
        * @return 
        */
        public function move( x:Number, y:Number ): Void
        {
                __viewport._x = x;
                __viewport._y = y;
        }


        /**
        *
        * @usage 
        * @param  state
        * @return 
        */
        public function changeState( state:String ): Void
        {
                if(state) __viewport.gotoAndStop(state);
        }


        /**
        *
        * @usage 
        * @param  x
        * @param  y
        * @return 
        */
        public function slideTo( x:Number, y:Number, relative:Boolean, time:Number, callback:Function ): Void
        {
                if(relative)
                {
                        var xTo:Number = __viewport._x + x;
                        var yTo:Number = __viewport._y + y;                       
                } else
                {
                        var xTo:Number = x;
                        var yTo:Number = y;
                }
               
                var xTween:Tween = new Tween(__viewport, '_x', Elastic.easeOut, __viewport._x, xTo, time, true );
                var yTween:Tween = new Tween(__viewport, '_y', Elastic.easeOut, __viewport._y, yTo, time, true );
               
                if(callback) xTween.onMotionStopped = callback;
               
                xTween.start();
                yTween.start();
        }

        /**
        *
        * @usage 
        * @return 
        */
        public function show(  ):Void
        {
                __viewport._visible = true;
        }

        /**
        *
        * @usage 
        * @return 
        */
        public function hide(  ):Void
        {
                __viewport._visible = false;
        }

        /**
        *
        * @usage 
        * @return 
        */
        public function getVisualObject(): MovieClip
        {
                return __viewport;
        }

}

И все. Очень логично и удобно, мухи отделены от котлет.

P.S. Занимаясь Flash не знать Мука -- то же самое, что быть лингвистом и не знать Достоевского ;)

ir73 28.12.2005 14:33

>P.S. Занимаясь Flash не знать Мука -- то же самое, что быть лингвистом
> и не знать Достоевского

у него книги платные : (

KUZEN 28.12.2005 15:16

Цитата:

Сообщение от ir73
>P.S. Занимаясь Flash не знать Мука -- то же самое, что быть лингвистом
> и не знать Достоевского

у него книги платные : (

На халяву только сыр в мышеловке ...

ir73 28.12.2005 15:30

KUZEN, не поделишся сыром ? )

KUZEN 28.12.2005 15:31

Цитата:

Сообщение от ir73
KUZEN, не поделишся сыром ? )

Сколько вешать в граммах )))

s_u_m_p 28.12.2005 18:10

2Antares
Цитата:

В крайнем случае никто не отменял createClassObject.
A это то причем? если у меня нету ни одного компонента в библиотеке, то этой функции тоже нету

Кстати единственный + в подходе Мука (на мой взгляд) это то что ты не должен ждать след. кадра при иницилизации мувов.


Часовой пояс GMT +4, время: 10:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.