Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   createEmtpyMovieClip() & Event Handler ??? (http://www.flasher.ru/forum/showthread.php?t=48763)

SoftLover 05.09.2003 16:13

createEmtpyMovieClip() & Event Handler ???
 
А может кто-нибудь подскажет как добавить обработчик события клипу, созданному программным путем методом createEmptyMovieClip()???

Armen Khanoyants 05.09.2003 16:16

imyaKlipa.onenterframe=function(){
trace("yo! flash cool:)");
}

SoftLover 05.09.2003 16:20

имя клипа генерируется динамически...

SoftLover 05.09.2003 16:26

и нужны обработчики типа mouseMove, mouseDown и т.п.

Пушистик 05.09.2003 17:38

:)
 
Код:

_root.createEmptyMovieClip("sq1", 1);
with (_root.sq1) {
    beginFill(0x000000, 100);
    lineStyle(0, 0xFFFF00, 100);
    moveTo(50,100);
    lineTo(70,100);
    lineTo(70,120);
    lineTo(50,120);
    lineTo(50, 100);
    endFill();
}
for (i=2; i<=10; i++) {
    duplicateMovieClip("sq1", "sq"+i, i);
    _root["sq"+i]._x=random(400);
    _root["sq"+i]._y=random(400);
}
MovieClip.prototype.onRollOver = function() {
    if (this._name.charAt(0)=="s") {
        trace("RollOver!!!");
    }
};
MovieClip.prototype.onRollOut = function() {
    if (this._name.charAt(0)=="s") {
        trace("RollOut!!!");
    }
};
MovieClip.prototype.onPress = function() {
    if (this._name.charAt(0)=="s") {
        trace("Press event!");
    }
};


SoftLover 05.09.2003 17:55

Thanks :)

iLoveYou 05.09.2003 23:24

Re: :)
 
Цитата:

Оригинал написал(а) Пушистик
Код:

MovieClip.prototype.onRollOver = function() {
    if (this._name.charAt(0)=="s") {

        trace("RollOver!!!");
    }
};


зашибисъ! :)

Пушистик 06.09.2003 12:31

Sergey"iLoveYou", чё тя там зашибло?

iLoveYou 07.09.2003 20:41

Цитата:

Оригинал написал(а) Пушистик
Sergey"iLoveYou", чё тя там зашибло?
зря иронизируешь. тут дело серьезное. я вот всю ночь думал:
почему if (this._name.charAt(0)=="s") , а не if (this._name.charAt(1)=="q")? вопрос века, йопт, а ты тут... :)

Пушистик 07.09.2003 22:24

хехе...
 
скажу те по секрету charAt(0)...

iLoveYou 07.09.2003 22:38

а почему?
или ты меня так изящно послал с моими дурацкими вопросами?
круто звучит: "скажу те по секрету charAt(0)..."
почти что: "эй, приятель, твоя просьба меня near bird". :)

major 08.09.2003 20:54

Пушистик, что-то я не понял, а зачем заморачиваться с прототипом. После этого мне нельзя называть клипы начиная с s.
Не проще-ли:

function forout() { // onRollOut
this.dx=0;
this.dy=0;
};
function fop() { // onPress
trace(this._name+" Press event!");
this.dx=0;
this.dy=0;
};
function forover() { // onRollOver
var k=-1+2*Math.random();
this.dx=5*k/Math.abs(k);
var k=-1+2*Math.random();
this.dy=5*k/Math.abs(k);
};
function forenter(){ // onEnterFrame
this._x+=this.dx;
this._y+=this.dy;
};



_root.createEmptyMovieClip("sq1", 1);
with (_root.sq1) {
beginFill(0xff0000, 100);
lineStyle(0, 0xFFFF00, 100);
moveTo(50,100);
lineTo(70,100);
lineTo(70,120);
lineTo(50,120);
lineTo(50, 100);
endFill();
}
for (i=2; i<=10; i++) {
duplicateMovieClip("sq1", "sq"+i, i);
_root["sq"+i]._x=random(400);
_root["sq"+i]._y=random(400);
}
for(i=1;i<=10;i++){ // назначение обработчиков событий
_root["sq"+i].onPress=fop;
_root["sq"+i].onRollOut=forout;
_root["sq"+i].onRollOver=forover;
_root["sq"+i].onEnterFrame=forenter;
}
stop();

Пушистик 09.09.2003 14:54

ну кому как чегче...:)через прототипы проц напрегается намного меньше чем когда ты делаешь через цикл!...

Цитата:

После этого мне нельзя называть клипы начиная с s
this.substring(0,10)="sssssssssp";
;)


Код:

_root.createEmptyMovieClip("square1", 1);
with (_root.square1) {
    beginFill(0x000000, 100);
    lineStyle(0, 0xFFFF00, 100);
    moveTo(50, 100);
    lineTo(70, 100);
    lineTo(70, 120);
    lineTo(50, 120);
    lineTo(50, 100);
    endFill();
}
for (i=2; i<=10; i++) {
    duplicateMovieClip("square1", "square"+i, i);
    _root["square"+i]._x = random(400);
    _root["square"+i]._y = random(400);
}
MovieClip.prototype.onRollOver = function() {
    randx = this._x-random(50)+50;
    randy = this._y-random(50)+50;
    if (this._name.substring(0,6)== "square") {
        this.onEnterFrame = function() {
            this._x+=(randx-this._x)/10;
            this._y+=(randy-this._y)/10;
        };
    }
};


major 10.09.2003 11:57

2Пушистик
Цитата:

через прототипы проц напрегается намного меньше чем когда ты делаешь через цикл!
Ну, раз пошла такая пьянка...
Тот копеечный выигрыш, который Вы получите за счет использования прототяпа, будет сразу же сьеден тем, что в обработчике используется if и строковая функция. Если же в фильме есть еще и другие клипы (а они наверняка есть), то обработчик, установленный через прототип, будет вызываться и для них. А значит ресурсы проца будут в пустую растрачиваться на обработку строковых ф-ций и if-ов.

В качестве конструктива: вариант2

function forout() { // onRollOut
this.dx=0;
this.dy=0;
};
function fop() { // onPress
trace(this._name+" Press event!");
this.dx=0;
this.dy=0;
};
function forover() { // onRollOver
var k=-1+2*Math.random();
this.dx=5*k/Math.abs(k);
var k=-1+2*Math.random();
this.dy=5*k/Math.abs(k);
};
function forenter(){ // onEnterFrame
this._x+=this.dx;
this._y+=this.dy;
};

_root.createEmptyMovieClip("sq1", 1);
with (_root.sq1) {
beginFill(0xff0000, 100);
lineStyle(0, 0xFFFF00, 100);
moveTo(50,100);
lineTo(70,100);
lineTo(70,120);
lineTo(50,120);
lineTo(50, 100);
endFill();
}
_root["sq1"].onPress=fop;
_root["sq1"].onRollOut=forout;
_root["sq1"].onRollOver=forover;
_root["sq1"].onEnterFrame=forenter;

for (i=2; i<=10; i++) {
// V V V вот оно !!! V V V
sq1.duplicateMovieClip( "sq"+i, i,sq1);
_root["sq"+i]._x=random(400);
_root["sq"+i]._y=random(400);
}
stop();

Пушистик 10.09.2003 14:23

Цитата:

будет сразу же сьеден тем, что в обработчике используется if и строковая функци
:D :D :D
юзай свои циклы:)
закроем тему...

iLoveYou 10.09.2003 22:29

2 major последний вариант - очень хороший :)

2 Пушистый не обижась, дружище! согласись, твои варианты слабы. у тебя получилось, как в пословице: "как поймать 4 льва? поймать 10 и 6 выпустить" :)
и прототипы тут явно не к месту были.


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

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