Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поворот картинки в цикле (http://www.flasher.ru/forum/showthread.php?t=188104)

flashtrash 29.11.2012 01:29

Поворот картинки в цикле
 
написал не большой код который поворачивает картинку по нажатию на кнопку, но мне нужно чтобы при нажатии картинка не сразу отображалась повёрнутой на N градусов а делала это в цикле постепенно. пробовал прикрутить topCont.rotationY+=4 for, картинка также отображается сразу повёрнутой на N*4,
видимо нужно как то обновлять Sprite в topCon... помогите разобраться

Код AS3:

import flash.events.MouseEvent;
 
//Предворительно добавляю картинку в библиотеку и импортирую её в as с именем Shuttle
 
var imgBD:BitmapData=new Shuttle(160,160);
 
var topImg:Bitmap=new Bitmap(imgBD);
 
var topCont:Sprite=new Sprite();
 
topCont.addChild(topImg);
 
topCont.z=0;
topCont.x=250;
topCont.y=150;
 
 
addChild(topCont);
 
buttan.addEventListener(MouseEvent.CLICK, turn);
 
function turn(e:MouseEvent):void{ topCont.rotationY+=4; }

и ещё, как программно указать точку регистрации картинки?

spirit2 29.11.2012 06:33

Плавный поворот:
1) Событие клика по кнопке.
2) Запуск таймера или слушание ENTER_FRAME.
3) Изменение rotation на некоторую небольшую величину в каждый тик таймера или переход кадра, и проверка, достигла ли величина rotation требуемого угла поворота. Если достигла, то остановка таймера или отписка от ENTER_FRAME.

Точка регистрации - это субъективное понятие в Adobe Flash, как и слои. Задавая координаты x и y объекту, вы управляете его положением относительно контейнера, в котором он находится.

buttan - это государство или химическое соединение на основе углерода =) А вот button - кнопка.

Dip52 29.11.2012 12:46

Код AS3:

import flash.events.MouseEvent;
import flash.events.Event;
 
//Скорость изменения угла поворота:
var speedRotation:Number = 1;
//Предыдущий угол поворота:
var previosAngle:Number = 0;
//Расстояние, которое объект должен повернуть (пройти):
var distance:Number = 4;
//Определяю событие нажатия кнопки мыши:
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
function mouseDown(event:MouseEvent):void
{
        //Изменяю значение переменной (добавляю угол поворота объекта сложенного вместе с расстоянием):
        previosAngle = myObject.rotation + distance;
}
//Определяю событие обновления кадров:
stage.addEventListener(Event.ENTER_FRAME, updateFrames);
function updateFrames(event:Event):void
{
        //Если угол поворота у объект меньше, чем у previosAngle, то:
        if(myObject.rotation < previosAngle)
        {
                //Изменяю угол поворота у объекта (поворачиваю его направо):
                myObject.rotation += speedRotation;
        }
}


Hauts 29.11.2012 13:03

Dip52, previosAngle -> previousAngle.

flashtrash 29.11.2012 18:08

всё стало ясно, спасибо всем. И отдельное спасибо Dip52

З.Ы spirit2, поржал))


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

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