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

kolotun 23.01.2007 14:26

управление объектом на сцене
 
около полутора лет не писал на ЭкшенСкрипте и вот столкнулся со следующей проблемой, достаточно глупой, но тем не менее застопорившей весь рабочий процесс
необходим объект на сцене который бы поворачивался при нажатии клавиш влево-вправо, и двигался с элементарным трением вперед.
итак код номер 1(написанный мною)
Код:

_root.roamer.cSpeed=5
_root.roamer.cFriction=0.7
_root.roamer.onEnterFrame=function(){
       
       
        if(Key.isDown(Key.LEFT)){
                dir-=5
        } else if(Key.isDown(Key.RIGHT)){
                dir+=5
        } else if(Key.isDown(Key.UP)){
                this.cSpeed=4
        }
       
        xIncr = Math.cos(dir*Math.PI/180)*this.cSpeed
        yIncr = Math.sin(dir*Math.PI/180)*this.cSpeed

        this._x-=xIncr
        this._y-=xIncr
        this._rotation=dir
        this.cSpeed*=this.cFriction
}

)

и соответсвенно код стыренный из Нета
Код:

onClipEvent (enterFrame) {
        if (Key.isDown(Key.UP)) {
                speed += 2;
        }
        if (Key.isDown(Key.DOWN)) {
                speed += -2;
        }
        if (Key.isDown(Key.RIGHT)) {
                dir += 15;
        }
        if (Key.isDown(Key.LEFT)) {
                dir += -15;
        }
        xspeed = Math.cos(dir*Math.PI/180)*speed;
        yspeed = Math.sin(dir*Math.PI/180)*speed;
        _x += xspeed;
        _y += yspeed;
        _rotation = dir;
}


причем при общем сходстве, мой код работает некорректно,
а использовать OnClipEvent как то стрёмно,
может ктонить ответит - отчего такое происходит и как лечиццо?

CorC 23.01.2007 14:57

у вас dir не обьявлена нигде

kolotun 23.01.2007 15:06

отследил в обоих вариантах через trace() - по дефолту - везде 0,

CorC 23.01.2007 15:13

Код:

_root.roamer.cSpeed = 5;
_root.roamer.cFriction = 0.7;
_root.roamer.dir = 0;
_root.roamer.onEnterFrame = function() {
        if (Key.isDown(Key.LEFT)) {
                this.dir -= 5;
        }
        if (Key.isDown(Key.RIGHT)) {
                this.dir += 5;
        }
        if (Key.isDown(Key.UP)) {
                this.cSpeed += 2;
        }
        if (Key.isDown(Key.DOWN)) {
                this.cSpeed -= 2;
        }
        xIncr = Math.cos(this.dir*Math.PI/180)*this.cSpeed;
        yIncr = Math.sin(this.dir*Math.PI/180)*this.cSpeed;
        trace(this.cSpeed);
        this._x -= xIncr;
        this._y -= yIncr;
        this._rotation = this.dir;
        this.cSpeed *= this.cFriction;
};

у меня так все ездит :)
Код:

        this._x-=xIncr
        this._y-=xIncr

может из-за этого? :)

kolotun 23.01.2007 15:19

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


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

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