PDA

Просмотр полной версии : _parent в теле класса


Nirth
11.07.2004, 19:55
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
Не получаеться. :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
посмотри это...

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

Nucer
15.07.2004, 00:23
2 Елё Я не знаю насчёт onEnterFrame, но _parent.XXX просто не может работать. MC._parent.XXX в общем тоже. Действительно, правильно MC.XXX, это я напутал.