Форум 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)
-   -   управление объектом (http://www.flasher.ru/forum/showthread.php?t=122059)

nOobCrafter 02.03.2009 12:02

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

qazwsx 02.03.2009 12:24

Ну да. Ну там в принципе все сделано криво :).

Kuruki 02.03.2009 14:35

Цитата:

Сообщение от qazwsx (Сообщение 802185)
Дак совпадение координат будет в 1 случае из 1000 :). Там же (clip_mc._x-_xmouse)/80 может получится и не целое число а _x/_ymouse целое число.

У меня в обоих случаях было совпадение когда я тестил (надо подождать несколько секунд). С точки зрения математики вы правы, координаты клипа будут бесконечно стремиться к коор-ам мышки и никогда их не достигнут. Но флэш не сможет прибавить к ним скажем очень маленькое число, которое он округляет по-видимому в большую сторону, поэтому клип все-таки достинает.

Цитата:

Сообщение от qazwsx (Сообщение 802185)
Ну да. Ну там в принципе все сделано криво :).

Как попросили, так и написал. Я не знаю, что он там хочет, может игру делает, в которой нужно убегать от бабочки ))). Условие тоже написал такое, какое просили.


P.S: qazwsx, вы лыбитесь в каждом предложении, это странно выглядит...

nOobCrafter 02.03.2009 14:45

Но по логике если нам надо что бы при достижении курсора просто временно остановилась анимация надо оставлять ентерфрейм и примерно так:
Код AS1/AS2:

clip_mc.onEnterFrame = function() {
if(this._x != _xmouse && this._y != _ymouse){
this._x -= (clip_mc._x-_xmouse)/80;
this._y -= (clip_mc._y-_ymouse)/80;
this._rotation=Math.atan2((this._y-this._parent._ymouse),(this._x-this._parent._xmouse))*180/Math.PI;
}
};

?

qazwsx 02.03.2009 14:50

Я очень улыбчив.

Криво то как бабочка летит за мышкой(как сделано изначально). А флеш не округлит 0.5 до 1 при делении или до 0 :).


Код AS1/AS2:

for(var startX:Number = 450, endX:Number = 270, i:Number = 0; i < 5000; i++)
{
        var delta:Number = (startX - endX) / 80;
 
        startX -= delta;
 
        trace(startX);
}

Вобщем тебе повезло :)

Kuruki 02.03.2009 15:15

Тем не менее бабочка останавливается и больше не движется, и у меня не было случая чтоб она не остановилась
К тому же вы говорите про числа, а я про координаты

qazwsx 02.03.2009 15:33

Код AS1/AS2:

var test:MovieClip = createEmptyMovieClip('test', 1);
test._x = 450;
var mouse:MovieClip = createEmptyMovieClip('mouse', 2);
mouse._x = 270;
 
drw(test);
drw(mouse);
 
for(i:Number = 0; i < 5000; i++)
{
        var delta:Number = (test._x - mouse._x) / 80;
 
        test._x -= delta;
 
        trace(test._x);
}
 
function drw(m:MovieClip):Void
{
        m.beginFill(Math.floor(Math.random() * 255), 10);
        m.lineStyle(1, 0x000000, 50);
        var d:Number = Math.floor(Math.random() * 50);
 
        m.moveTo(0, 0);
        m.lineTo(d, 0);
        m.lineTo(d, d);
        m.lineTo(0, d);
        m.lineTo(0, 0);
        m.endFill();
}

Ну да встать то он встанет только за 100500 шагов. Бабачка будет долго замедлятся... Он там в итоге до 0.5 округлает координаты. Можно после определенного момента уже не считать дельту для перемещения :).

Dr_Bra 02.03.2009 21:22

так бабочка все равно машет крыльями когда долетает до курсора, ведь вишка -то в крыльях ..

Tails 03.03.2009 06:42

Вложений: 1
Вложение 21696
Делать по ночам больше нечего :), кстати чо куда тыкнуть нада шоб видно было скока раз архивчик скачали ?

qazwsx 03.03.2009 11:24

Дак пусть не машет. stop() и все


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

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