Форум 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)
-   -   В классе не срабатывает метод клипа (http://www.flasher.ru/forum/showthread.php?t=108790)

Волгоградец 29.02.2008 13:33

В классе не срабатывает метод клипа
 
Привет! Друзья, помогите разобраться со следующей проблемой:
Код:

import mx.utils.Delegate;

class RoundMenu {
        private var _mc:MovieClip;
        private var clip:MovieClip;
        private var flag:Boolean;

        public function RoundMenu (mc:MovieClip, inst:String) {
                _mc = mc;
                clip = _mc.attachMovie (inst, inst, _mc.getNextHighestDepth ());
                clip.onEnterFrame = Delegate.create (this, menu_move);
        }

        private function menu_move ():Void {
                trace (flag);
                clip.onRollOver = function () {
                        flag = true;
                };
                clip.onRollOut = function () {
                        flag = false;
                };
        }
}

Это сильно урезаный класс... Вобщем trace выдает undefined, хотя остальные методы клипа работают замечательно, например clip._x, clip._yscale и т.д.

chingachgoog 29.02.2008 13:43

А если вместо clip.onRollOver поставить this.onRollOver?
И еще странно в цикле каждый раз назначать обработчик.

Волгоградец 29.02.2008 14:25

Если использовать this - ругается что нет такого метода.
Цитата:

И еще странно в цикле каждый раз назначать обработчик.
Вот это я ступил - обработчик же вещает событие как только это событие случится... Спасибо.

Подождите... А как мне эти условия в классе задать? Если я в конструкторе напишу, то только один раз срабатают? Через Delegate придется?

iNils 29.02.2008 14:32

Код:

import mx.utils.Delegate;

class A {
        private var _mc:MovieClip;
        private var clip:MovieClip;
        private var flag:Boolean;

        public function A(mc:MovieClip, inst:String) {
                _mc = mc;
                clip = _mc.attachMovie (inst, inst, _mc.getNextHighestDepth ());
                clip.onEnterFrame = Delegate.create (this, menu_move);
                clip.onRollOver = Delegate.create (this, onRollOver);
                clip.onRollOut = Delegate.create (this, onRollOut);
        }

        private function menu_move ():Void {
                trace (flag);
        }
        private function onRollOver () {
                flag = true;
        };
        private function onRollOut () {
                flag = false;
        };
}


Волгоградец 29.02.2008 14:53

Как просто. Спасибо.


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

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