Форум 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 это то причем? если у меня нету ни одного компонента в библиотеке, то этой функции тоже нету

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

Antares 29.12.2005 06:31

Ну да. А также разделение кода и содержания, названное Фаулером одной из основных задач программирования :)

ir73 29.12.2005 10:54

Цитата:

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

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

Базовый класс выглядит так:
И все. Очень логично и удобно, мухи отделены от котлет.

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

все таки пытаюсь разобраться и понять РЕАЛьНОЕ приемущество такого наследования. С таким методом по идее надо в первом кадре инициализировать все классы мувиков, к которым эти классы прицеплены. (я верно все понимаю?) Но разве это проще? пусть мувики сами инициализируют свои классы по мере надобности. Или в чем бонус подхода?

Antares 29.12.2005 12:46

Цитата:

Сообщение от ir73
все таки пытаюсь разобраться и понять РЕАЛьНОЕ приемущество такого наследования. С таким методом по идее надо в первом кадре инициализировать все классы мувиков, к которым эти классы прицеплены. (я верно все понимаю?)

Неверно.

В чем бонус, я уже написал дважды сверху. Не понимаете -- ради бога, используйте свой подход. Или поразрабатывайте вещи, где помимо визуального ряда сложная начинка по взаимодействию с сервером. Вот там это особенно сильно видно, где должен быть визуальный объект, а где логика.

ir73 29.12.2005 15:24

В чем бонус, я уже написал дважды сверху. Не понимаете -- ради бога, используйте свой подход. Или поразрабатывайте вещи, где помимо визуального ряда сложная начинка по взаимодействию с сервером. Вот там это особенно сильно видно, где должен быть визуальный объект, а где логика.
-----------------------------

Не совсем так. Я, наоборот, очень хочу понять приемущества данного метода, так как профи себя не считаю. Просто довод "мухи отдельно, котлеты отдельно" мне показался не самый убедительным. Я думал, может сущесвтует довольно наглядный пример, где будет показано очевидное приемущество сего метода.
Вот приведенный выше приме по-моему не очень наглайден. Если есть "помимо визуального ряда сложная начинка по взаимодействию с сервером", то приведенный вами класс описывает поведение мувика. А для взаимодействия с сервером все равно придется делать свой класс. Что бы мухи были отдельно от котлет.

Надеюсь на вашу помощь в моем понимании данной темы.

Nirth 29.12.2005 16:23

Ребят, тут никто не пытаеться укрыть от вас тайны века, просто есть некоторые вещи которые на форуме передать практически невозможно, об этом люди книги целые пишут.
в кратце Антарес рассказал, более подробно нужно уже статьи писать. С другой стороны, статьи уже были написанны, просто нужно погуглить, если нет возможности купить книги.

Antares 29.12.2005 16:43

Цитата:

Сообщение от ir73
Вот приведенный выше приме по-моему не очень наглайден. Если есть "помимо визуального ряда сложная начинка по взаимодействию с сервером", то приведенный вами класс описывает поведение мувика. А для взаимодействия с сервером все равно придется делать свой класс. Что бы мухи были отдельно от котлет.

Надеюсь на вашу помощь в моем понимании данной темы.

Недавно пришлось под НГ делать всякие там снежинки и прочую хню. Методика всем известна, в принципе. Однако благодаря такому подходу можно обойтись одним классом, при этом погода будет менять элегантнее некуда -- передали одному методу название состояния и все. А наследующие от мувиклипа сделали бы столько классов, сколько состояний.

Выложу как буду посвободнее пример.

А вообще мне нравится подход -- "пытаюсь понять, т.к. не считаю себя профи, но очень уж сомнительно это все...". Вы просто спросите себя Колин Мук -- профи? Поддерживающие подобную позицию -- они просто так ее начали поддерживать? Или все же очень уж сомнительно?

ir73 29.12.2005 17:07

Цитата:

Сообщение от Antares
Недавно пришлось под НГ делать всякие там снежинки и прочую хню. Методика всем известна, в принципе. Однако благодаря такому подходу можно обойтись одним классом, при этом погода будет менять элегантнее некуда -- передали одному методу название состояния и все. А наследующие от мувиклипа сделали бы столько классов, сколько состояний.

Выложу как буду посвободнее пример.

А вообще мне нравится подход -- "пытаюсь понять, т.к. не считаю себя профи, но очень уж сомнительно это все...". Вы просто спросите себя Колин Мук -- профи? Поддерживающие подобную позицию -- они просто так ее начали поддерживать? Или все же очень уж сомнительно?

был бы очень признателен за пример со снежинками! цены б не было!
а на счет вашей фразы "пытаюсь понять, т.к. не считаю себя профи, но очень уж сомнительно это все...", я б перефразировал так "пытаюсь понять, т.к. не считаю себя профи, но что то не могу найти достойного применения"


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

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