Форум 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)

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, время: 10:29.

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