Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   _parent в теле класса (http://www.flasher.ru/forum/showthread.php?t=60506)

Nirth 11.07.2004 19:55

_parent в теле класса
 
Код:

onButton.prototype.drawButton = function() {
        this.createEmptyMovieClip("upperButton", 500);
        this.XXX = 120;
        this.upperButton._y = 60;
        with (this.upperButton) {
                //тут я рисую
        }
        this.upperButton.onRelease = function() {
                trace(_parent.XXX);
               
        };
};

и так после добавления this.upperButton.onRelease мувиклип стал реагировать на мышку(курсор меняеться) но он на отказ не понимает _parent.XXX ,тоесть я не могу дать ему ссылку на переменную которая находиться в главном мувике.
вот объясните плиз в чем тут проблема и как правильно ссылаться на родительский объект.
заранее спасибо.

fiot 11.07.2004 20:41

Код:

this.upperButton.onRelease = function() {  trace(this._parent.XXX);    };

Nirth 11.07.2004 21:10

Вложений: 1
Не получаеться. :confused:
экспортирую как флэш 7 с версии с АС 1.0.

ас файл ниже (с исправлением ниже fiot).

fiot 12.07.2004 03:52

по моему использовать createEmptyMovieClip нельзя... так как он не будет создаваться... попробуй уже готовый, делать attachMovie

Nirth 12.07.2004 14:12

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

fiot 12.07.2004 17:32

Вложений: 1
посмотри это...

fiot 12.07.2004 19:03

есть и такое решение...
 
Код:

Object.prototype.REGISTER_CLASS = function(class)
{
        this.constructor = class;
        this.__proto__ = class.prototype;
        this.constructor();
};
_global.o = function()
{
        this.id = "o";
        this.init();
        ASSetPropFlags(this, "id", 7, 1);
};
_global.depth = function()
{
        return this += 1;
};
o.prototype = new MovieClip();
o.prototype.init = function()
{
        this.createEmptyMovieClip('o', depth());
        this.o.draw(0xAA0066, 42, 102, 78, 158);
        this.o.onPress = function()
        {
                this.draw(0xAA6666, 42, 102, 78, 158);
        };
        this.o.onRelease = function()
        {
                this.draw(0xAA0066, 42, 102, 78, 158);
        };
        ASSetPropFlags(this.o, null, 1, 1);
};
MovieClip.prototype.draw = function(col, top, left, bottom, right)
{
        this.lineStyle(0);
        this.beginFill(col);
        this.moveTo(left, top);
        this.lineTo(right, top);
        this.lineTo(right, bottom);
        this.lineTo(left, bottom);
        this.lineTo(left, top);
        this.endFill();
};
ASSetPropFlags(_global, null, 1, 1);
// =)
this.createEmptyMovieClip('a', 1);
a.REGISTER_CLASS(o);


Nirth 12.07.2004 21:04

спасиб=)
чуть перепоял код. все работает.
только мне всеже не понятно чисто с логической стороны, что там не правильно....может гуру объяснят?

Nucer 13.07.2004 21:33

Вы чё народ, понаписали, я даж не понял. Дело всё в том, что
Код:

this.upperButton.onRelease = function()
{
        trace(_parent.XXX); //this == this.upperButton.onRelease
};

Делай так
Код:

var MC = this;
this.upperButton.onRelease = function ()
{
        trace( MC._parent.XXX ); //this == this.upperButton.onRelease
};


Елё 13.07.2004 21:46

Тут не в этом дело
тут просто не уточняется что drawButton вызывается на onEnterFrame. Вот все и глючит
А правильное обращение написано уже во втором сообщении fiot-ом

а MC._parent.XXX не правильно
если уж так писать правильно MC.XXX


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

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