Форум 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)
-   -   Как правильно использовать getter и setter (http://www.flasher.ru/forum/showthread.php?t=137803)

in4core 23.03.2010 15:26

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

Насчет примера ) покажи какон будет работать - как ты будешь их вызывать. Это меня интересовало , а не как ты написал. Как пишется я вкурсе

И кстати немного некорректно написал ты

Код AS1/AS2:

import mx.utils.Delegate;
this.mc.onEnterFrame = Delegate.create(this, mc_onEnterFrameHandler);

в чем видишь?

должно быть
Код AS1/AS2:

this.mc.onEnterFrame = create(this, mc_onEnterFrameHandler);


NoCD 23.03.2010 15:39

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

Переделал код Удава для своих нужд.
Вот конечный результат

Код AS1/AS2:

import mx.utils.Delegate;
class Test{
 
public var mc:MovieClip;
public var x:MovieClip;
public var y:MovieClip;
 
public var container:MovieClip;
 
public function a(container)
        {
                super();
 
 trace("container= "+container);
 
 
 
                this.mc = container;
        this.x = container._x;
                this.y = container._y;
                // тут обработчик будет вызывать в области видимости объекта mc
                //this.mc.onEnterFrame = mc_onEnterFrameHandler;
 
                // тут в области видимости текущего объекта. Т.е. экземпляра Test
                this.mc.onEnterFrame = Delegate.create(this, mc_onEnterFrameHandler);
 
                // или что не понятно?
        }
 
        //private var mc:MovieClip;
 
        private function mc_onEnterFrameHandler():Void
        {
                //trace(this);
                trace(this.mc);
 
                trace(this.mc._x)
        }
 
        }

для меня не было понятным, то, почему не доходили свойства самого клипа mc в функцию mc_onEnterFrameHandler()

То есть я ожидал изначально получить вот так результат trace(this._x) // равно 200
Так как trace(this) у меня показывал имя передаваемого клипа, то для меня было ОЧЕВИДНЫМ и передача вместе с ним все его свойства. Но оказывается просто так свойства клипа нельзя перенести в другую функцию. Надо использовать Delegate.

В итоге пришлось объявлять их специально. Так как для меня это еще не топаная тропа, не буду говорить, хорошо или плохо вот такой вид передачи свойств, будущее покажет.

udaaff 23.03.2010 15:46

Цитата:

Сообщение от in4core (Сообщение 895078)
Код AS1/AS2:

import mx.utils.Delegate;
this.mc.onEnterFrame = Delegate.create(this, mc_onEnterFrameHandler);

в чем видишь?

должно быть
Код AS1/AS2:

this.mc.onEnterFrame = create(this, mc_onEnterFrameHandler);


У класса Test нету метода create. Есть статический метод create у класса Delegate.

in4core 23.03.2010 17:11

Да накосячил , забыл об этом))) Ты про гет и сет не ответил) покажи как ты свой код встроешь в фрейм и запустишь - вот что интересно в первую очередь )))

udaaff 23.03.2010 17:25

Цитата:

Сообщение от in4core (Сообщение 895120)
и что ? ты его уже импортировал! причем тут это? Т

Да боже ж мой. Импорт означает лишь то, что нам не нужно будет писать полное имя класса.
Цитата:

ы про гет и сет не ответил) покажи как ты свой код встроешь в фрейм и запустишь )))
Что вам непонятно? Как свойству значение присвоить?

in4core 23.03.2010 17:31

Я исправился - перечитай ))) да про делегату ошибся. бывает.

Про сеттеры :

Код AS1/AS2:

var n = new Class();

и дальше как ты вызовешь сеттеры и геттеры свои - вот что интересно. покажи

udaaff 23.03.2010 17:32

Код AS1/AS2:

n.width = 1234;
var a:Number = n.width;


in4core 23.03.2010 17:34

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

udaaff 23.03.2010 17:55

Цитата:

а гет когда произойдет?
Во второй строчке кода.
Цитата:

И интересно чем оно отличалось от моего кода ? смысл один и тот же, тока пишется подругому а работает так же. Или я не прав? Поправь тогда - буду знать на будущее
http://help.adobe.com/ru_RU/ActionSc...8a9b90204-7fcb

in4core 23.03.2010 18:18

спасибо дарагой


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

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