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

OGR 15.03.2008 17:57

Простое движение
 
Уважаемые форумчане, подскажите, как на ActionScript реализовывать простое движение. Все мои попытки самому построить нечто не дали ничего. Поэтому просьба: выложите пример хотя бы перемещающегося кружка.

Volodyahome 15.03.2008 18:10

пользоваться не обязательно AS, если это конечно не принципиально, для двидения можно использовать просто анимацию

Fernando Costa 15.03.2008 18:17

Код:

mc.onEnterFrame = function(){
  this._x++
  this._y++
}


qazwsx 15.03.2008 18:18

Еще раз повторюсь. Что...? Я не понимаю что ты подразумиваеш под Простым движением

D12 15.03.2008 18:38

Вложений: 1
Вот держи здесь все три примера программной анимации для AS1/AS2

так же можно двигать и просто анимацией с изпользованием MotionTween

Приятного дня

OGR 15.03.2008 23:15

D12:
Спасибо за примеры. Очень наглядно. А можно как-то сделать, чтобы пикачу передвигался к определенной координате (x, y)?

D12 16.03.2008 01:32

OGR для наглядности возьму первый пример с onEnterFrame
как я в них говорил просто меняйте условия
Код:

var _speedX:Number = 3;
var _finishX:Number = 400;
Player.onEnterFrame = function() {
        if (this._x<_finishX) {
                this._x += _speedX;
        }
};

здесь в условии мы говорим что если наш персонаж имеет координату ниже, то он будет двигатся с заданной скоростью пока недостигнет конечной координаты
для двух осей можно задать таким образом ведь если нам нужно остановится на двух координатах нам нужна синхронная скорость(если вам это не так важно то вы можете прописать 2 условия один как сказоно выше для икса и по аналогии для игрика )
вернёмся в наши гущи :
Код:

//начальные координаты
var _startX:Number = 100;
var _startY:Number = 250;
//конечные координаты
var _finishX:Number = 500;
var _finishY:Number = 150;
//скорость
var _speedX:Number = 3;
var _speedRightY:Number = ((_finishY-_startY)/(_finishX-_startX))*_speedX;
var _speedLeftY:Number = ((_finishY-_startY)/(_startX-_finishX))*_speedX;
//
Player._x = _startX;
Player._y = _startY;
Player.onEnterFrame = function() {
        if (this._x<_finishX&&_startX<_finishX) {
                this._x += _speedX;
        }
        if (this._x>_finishX&&_startX>_finishX) {
                this._x -= _speedX;
        }
        //
        if (this._y<_finishY&&_startY<_finishY&&_startX<_finishX) {
                this._y += _speedRightY;
        }
        if (this._y>_finishY&&_startY>_finishY&&_startX<_finishX) {
                this._y -= _speedRightY*-1;
        }
        if (this._y<_finishY&&_startY<_finishY&&_startX>_finishX) {
                this._y += _speedLeftY;
        }
        if (this._y>_finishY&&_startY>_finishY&&_startX>_finishX) {
                this._y -= _speedLeftY*-1;
        }
};


OGR 15.05.2008 00:15

Вложений: 1
Извиняюсь за столь поздний ответ, не было времени проверить.
D12, попробовал твой первый пример сделать - ничего не получилось. Все сделал один в один. Не работает. Прикладываю свои результаты.
P. S. складывается впечатление, что ошибка у меня в ДНК

lexo2000 15.05.2008 10:11

в вашем примере необходимо кружку необходимо присвоить имя "Player" (слева, movieClip properties) и код заработает. или можете присвоить любое другое имя, но тогда в коде будет необходимо его подставить перед обработчиком onEnterFrame.


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

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