Форум 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 Listeneres (http://www.flasher.ru/forum/showthread.php?t=86428)

Mnilionic 15.10.2006 03:10

as2 Listeneres
 
мне нужно написать обработчик, который бы отслеживал любые изменения в наборе переменных.
я знаю два варианта:
1. запускать функцию проверки на событие онЭнтерФрейм
2. сделать лисенер

на сколько я понял учебник, лисенеры привязываются к стандартным событиям (в моём случае онЭнтерФрейм).

Отсюда мой вопрос:
в чём, собственно разница, между тем, запускать функцию первым методом или вторым - всё равно всё происходит по одному событию, и ресурсов расходуется столько же... или не столько же?

miramax 15.10.2006 03:30

1. использовать ООП модель, геттеры и сеттеры (function get prop и т.п.) - они как раз для этого и предназначены. Ведь изменяя свойство width , ты вызываешь кучу функций внутри нескольких клипов.
2. Поюзай Object.watch , это для АС 1 кодеров тоже подходит. Стандартный вариант.

etc 15.10.2006 13:28

Можно ещё вспомнить setProperty и getProperty, для реализации геттеров/сеттеров на AS1…

Mnilionic 16.10.2006 02:02

сделал вот такую вещь:
Код:

class VarPlace {
        var a:Number;
        function VarPlace(aa:Number) {
                a = aa;
        }
        function set A(aa:Number):Void {
                a = aa;
                //update(); как мне отсюда запустить функцию с монтажной линейки проэкта?
        }       
        function get A():Number {
                return a;
        }
}

в проекте:
Код:

function update() {
                trace("update");
}
var myVars:VarPlace = new VarPlace(100);

фугкция при установки переменной явно не запускается.
Как её запустить?

Mnilionic 16.10.2006 02:11

miramax, можно этот момент подоробне:
"Ведь изменяя свойство width , ты вызываешь кучу функций внутри нескольких клипов."

Некоторые переменные из моего "комплекта" как раз свойства МувиКлипа

wvxvw 16.10.2006 03:00

Цитата:

как мне отсюда запустить функцию с монтажной линейки проэкта?
Как и из любого другого места... _root.update();

Mnilionic 16.10.2006 03:48

wvxvw, Вы пробовали?

etc 16.10.2006 03:59

Mnilionic, ты же не вызвал сеттер!
Код:

public function set A(aa:Number):Void {
    a = aa;
    _root.update();
}

Код:

function update() {
                trace("update");
}
var myVars:VarPlace = new VarPlace(100);
myVars.A = 10;


Mnilionic 16.10.2006 06:32

извините.. перепутал имена свойств с именами переменных для их хранение.
это освоил.


на сцене есть клип mc_ball и нужно,
чтоб вся вышенаписанная констукция работала с ним.

То есть переписать пару сеттеров этого клипа
(_x и _y добавив вызов функции update(); )
и добавить пару новых свойств.

Можно это сделать с экземпляров, у которого я знаю имя?

etc 16.10.2006 13:45

Переписать _x и _y нельзя.
Нужно создать свои сеттеры x и y и навесить вышеописанный класса на ball_mc.


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

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