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

SveTTT 11.10.2006 02:19

Еще раз движение картинок
 
Приветствую всех!

Помогите пожалуйста исходником :rolleyes: (по образцу и подобию быстрее разберусь :umnik2: ) со следующим вопросом.

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

Спасибо!

El Scream 11.10.2006 16:16

1. Кидаешь картинку на слой. Левая кнопка мыши - Convert to Symbol. Выбираешь MovieClip. Галочку на Export to ActionScript.В поле Identifer называешь мувик допустим myMovie. Удаляешь со слоя этот объект.
2. На первом слое в поле Action.
Код:

stop();
var t:MovieClip=attachMovie("myMovie",t,this.getNextHighestDepth());//експорт из библиотеки созданного тобою клипа
t._x=начальныая точка на оси абсцисс;
t._y=начальная точка на оси ординат;
t.onEnterFrame=function() {
        with (t) {
        _x+=величина смещения по абсциссе;
        _y+=величина смещения по ординате;
        if (условие){
                var t:MovieClip=attachMovie("movic",t,this.getInstanceAtDepth());// нужна только в том случае если ты собираешься именно создавать новый мовик. Если же нужно просто изменение координат то эта строчка не нужна
                _x=новые начальные координаты;
                _y=новые начальные координаты;               
        }
        }
}

Код не идеален. Но нет предела совершенству. Дерзай.

Хемуль 11.10.2006 16:36

2 El Scream:
Интересно, это так задумывалось, что ваш новосозданный мувиклип будет иметь имя "undefined"?

SveTTT 11.10.2006 21:15

2 El Scream - спасибо за наводку, только я не знаю как описать условие, чтобы этотже (myMovie) при достижении правой границы (напиример: от Х=0 до Х=300) начинал движение заново.

Спасибо

Хемуль 11.10.2006 23:47

2 SveTTT:
Условие зависит от вашей задачи. Достижение границы - понятие расплывчатое. Непонятно, нужно ли вам, чтобы мувиклип возвращался в начальную позицию, как только лишь своим карем коснётся границы сцены, или же он должен уйти за границу сцены целиком и потом вернуться...

SveTTT 12.10.2006 00:18

Цитата:

Сообщение от Хемуль
2 SveTTT:
Условие зависит от вашей задачи. Достижение границы - понятие расплывчатое. Непонятно, нужно ли вам, чтобы мувиклип возвращался в начальную позицию, как только лишь своим карем коснётся границы сцены, или же он должен уйти за границу сцены целиком и потом вернуться...

... он должен уйти за границу сцены целиком и потом появиться сначала.
Принцип (например): появился слева, двигается вправо, исчез справа, появился слева, двигается вправо, исчез справа, и так в цикл.:umnik2:

D12 12.10.2006 01:59

так ?

Код:

this.mc.onEnterFrame = function() {
        if (Key.isDown(Key.LEFT)) {
                this._x -= 3;
        }
        if(this._x <= -this._width){
                this._x = Stage.width;
        }
};

создай муви-клип и назови его "mc"

введи код в кадр где этот мувик находится , запусти тест нажми клавишу лево и смотри то или не то .

Хемуль 12.10.2006 02:25

Вложений: 1
Продолжая пример товарища D12...
Нижеприведённый код нужно вставить просто в кадр таймлайна, например, _root'а.
Код:

var speed:Number = 3;
var clip:MovieClip = createRectangleMovieClip("clip", _root, _root.getNextHighestDepth(), 100, 100, 40, 40, 0x006600, 100);

this.onEnterFrame = function() {
        if (Key.isDown(Key.LEFT)) { clip._x -= speed; }
        if (Key.isDown(Key.RIGHT)) { clip._x += speed; }
        if (Key.isDown(Key.UP)) { clip._y -= speed;        }
        if (Key.isDown(Key.DOWN)) {        clip._y += speed; }
        if (clip._x < -clip._width) { clip._x = Stage.width - 1; }
        if (clip._x > Stage.width) { clip._x = 1 - clip._width; }
        if (clip._y < -clip._height) { clip._y = Stage.height - 1; }
        if (clip._y > Stage.height) { clip._y = 1 - clip._height; }       
}

function createRectangleMovieClip(newName:String, parentClip:MovieClip, parentClipDepth:Number, newX:Number, newY:Number, newWidth:Number, newHeight:Number, newColor:Number, newAlpha:Number):MovieClip
{
        var newClip:MovieClip = parentClip.createEmptyMovieClip(newName, parentClipDepth);
        newClip.beginFill(newColor);
        newClip.moveTo(0, 0);
        newClip.lineTo(newWidth, 0);
        newClip.lineTo(newWidth, newHeight);
        newClip.lineTo(0, newHeight);
        newClip.lineTo(0, 0);
        newClip.endFill();
        newClip._x = newX;
        newClip._y = newY;
        newClip._alpha = newAlpha;
        return newClip;
}

Управлять мувиклипом с помощью клавиш управления курсором. Обрабатываются условия перехода мувиклипа через все границы сцены.
Исходник прикрепляю...

SveTTT 12.10.2006 09:33

2 Хемуль & 2 D12 - Спасибо!
Буду разбираться.


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

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