Форум 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)
-   -   Где находиться конструктор свойств мувика, типа _xscale? (http://www.flasher.ru/forum/showthread.php?t=105877)

chingachgoog 25.12.2007 21:04

Где находиться конструктор свойств мувика, типа _xscale?
 
Код:

ASSetPropFlags(MovieClip.prototype, null, null, 1);
for (var i in MovieClip.prototype) {
        trace(i+" = "+MovieClip.prototype[i]);
}

Данное перечисление дает ряд свойств, типа
enabled = true
useHandCursor = true

Их можно легко подправить:

Код:

MovieClip.prototype.enabled=false
Теперь все мувики не работают как кнопки.

Но. В перечислении нет свойств типа _xscale, _focusrect и т.п.,
а хочется сделать что-то вроде:
Код:

MovieClip.prototype._focusrect=false
Но так не срабатывает.

iNils 25.12.2007 21:34

Это сеттеры/геттеры

chingachgoog 25.12.2007 22:24

А нельзя встроенные сеттер/геттеры переопределить типа addProperty?

И еще: а где все же храняться дефолтные значения встроенных геттер/сеттеров?

iNils 25.12.2007 23:37

Они встроенны в плеер.

chingachgoog 26.12.2007 13:35

Странно,

Код:

i=0
j=0

MovieClip.prototype.getMethod = function() {
        trace("get "+i)
        i++
        return this._focusrect1;
};
MovieClip.prototype.setMethod = function(par) {
        this._focusrect1=par
        trace("set "+j)
        j++
};

MovieClip.prototype.addProperty("_focusrect1", MovieClip.prototype.getMethod, MovieClip.prototype.setMethod)

createEmptyMovieClip("m1",1)

trace(m1._focusrect1)
m1._focusrect1=123

Трейс показывает, что геттер/сеттер вызывался 64 раза каждый.

iNils 26.12.2007 13:41

Выводим m1._focusrect1, это вызывает метод getMethod, который возращает this._focusrect1, который вызывает getMethod, который возращает ... и так далее.

chingachgoog 26.12.2007 13:58

Это обычная ситуация с addProperty?
И почему только 64 раза?

iNils 26.12.2007 14:10

Пример
Код:

MovieClip.prototype.getX = function () {
        return this._x;
};
MovieClip.prototype.setX = function (val) {
        this._x = val;
};
MovieClip.prototype.addProperty ("x", MovieClip.prototype.getX, MovieClip.prototype.setX);
createEmptyMovieClip ("m1", 1);
trace (m1.x);
m1.x = 123;
trace (m1.x);

Как видите, "снаружи" я обращаюсь к x, а "внутри" работаю с _x.
Почему 64 - не знаю.

etc 26.12.2007 15:58

Вероятно глубина рекурсии установлена в 64 итерации.

chingachgoog 26.12.2007 16:21

Все же геттер/сеттер можно задать по нужному дефолту, вот что у меня получилось:

Код:

MovieClip.prototype.onEnterFrame=function(){
        this.__proto__=Object.prototype
        trace(this)
        this._alpha=50 // меняем любое геттер/сеттер свойство на нужное значение
}

createEmptyMovieClip("m1",1)

setTimeout(function(){
                                        trace(m1._alpha)
                                        trace(typeof(m1))
                                        },50)



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

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