Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.02.2011, 16:31
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 21  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Цитата:
как сделатьчтоб он разворачивался не относительно центра?
Измените положение точки регистрации клипа.

Старый 07.02.2011, 17:08
Vansimar вне форума Посмотреть профиль Отправить личное сообщение для Vansimar Найти все сообщения от Vansimar
  № 22  
Ответить с цитированием
Vansimar
 
Аватар для Vansimar

Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
а как это сделать лучше?

Старый 07.02.2011, 18:04
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 23  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
самолетик у вас в контейнере?
тогда сдвиньте его внутри контейнера так чтобы нулевые координаты в контейнере совпадали с нужной вам точкой на самолетике...
__________________
freelance | Раздор

Старый 07.02.2011, 18:53
Vansimar вне форума Посмотреть профиль Отправить личное сообщение для Vansimar Найти все сообщения от Vansimar
  № 24  
Ответить с цитированием
Vansimar
 
Аватар для Vansimar

Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
ну допустим, тогда в одну сторну он будет поворачиваться хорошо, а в другую хрен знает как!фигня получиться!

Старый 07.02.2011, 18:56
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 25  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Упрощенная трехвекторная физика для самолета. Код примерный и нуждается в дополнительной настройке и призван просто показать суть метода. Для просторы наблюдения самолет фиксирован по оси х.
Код AS3:
package
{
    import flash.display.Graphics;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.geom.Point;
    import flash.ui.Keyboard;
 
    [SWF(width="640", height="480")]
 
    public class airplane extends Sprite
    {
        private static const TO_RADIAN:Number = Math.PI / 180;
 
        //тяга двигателя
        private var propellingForce:Point;
        //гравитация
        private var gravitation:Point;
        //подъемная сила
        private var lift:Point;
        //суммарный вектор
        private var force:Point;
 
 
 
        private var upFlag:Boolean = false;
        private var downFlag:Boolean = false;
        private var leftFlag:Boolean = false;
        private var rightFlag:Boolean = false;
 
        //самолет
        private var plane:Sprite;
 
        //рисунок самолета
        private var planeGraphics:Sprite;
 
        //отображение векторов
        private var vectorsGraphics:Sprite;
 
 
        public function airplane()
        {
            //начальная скорость 10
            propellingForce = new Point(10, 0);
 
            //сила гравитации 10
            gravitation = new Point(0, 10);
 
            plane = new Sprite();
            plane.x = 30
            plane.y = stage.stageHeight * .5;
 
            planeGraphics = new Sprite();
            drawPlane(planeGraphics.graphics);
            plane.addChild(planeGraphics);
 
            vectorsGraphics = new Sprite();
            plane.addChild(vectorsGraphics);
 
            addChild(plane);
 
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardHandler);
            stage.addEventListener(KeyboardEvent.KEY_UP, keyboardHandler);
        }
 
        private function drawPlane(gr:Graphics):void
        {
            gr.beginFill(0x694246);
            gr.drawRect(0, 0, 30, 10);
            gr.endFill();
        }
 
        private function enterFrameHandler(event:Event):void
        {
            if (upFlag)
            {
                planeGraphics.rotation -=2;
            }
            if (downFlag)
            {
                planeGraphics.rotation +=2;
            }
            if (rightFlag)
            {
                propellingForce.normalize(propellingForce.length * 1.02);
            }
            if (leftFlag)
            {
                propellingForce.normalize(propellingForce.length * 0.98);
            }
 
            //поворачиваем вектор тяги по оси самолета
            propellingForce = Point.polar(propellingForce.length, planeGraphics.rotation * TO_RADIAN);
 
            /*поворачиваем вектор подъемной силы перпендикулярно оси самолета,
              длина вектора является проекцией тяги на ось x (такое вот нехилое упрощение)
            */
            lift = Point.polar(propellingForce.x, planeGraphics.rotation * TO_RADIAN - Math.PI * .5);
 
            //считаем суммарный вектор
            force = propellingForce.add(gravitation).add(lift);
 
            plane.y += force.y;
 
            //раскомментировать для полета
            //plane.x += force.x;
 
            drawVectors();
        }
 
        private function drawVectors():void
        {
            var gr:Graphics = vectorsGraphics.graphics;
 
            gr.clear();
 
            var liftPos:Point = vectorsGraphics.globalToLocal(lift);
            var gravitationPos:Point = vectorsGraphics.globalToLocal(gravitation);
            var propellingPos:Point = vectorsGraphics.globalToLocal(propellingForce);
            var forcePos:Point = vectorsGraphics.globalToLocal(force);
 
 
            //подъемная сила
            gr.lineStyle(1, 0xFF0000);
            gr.lineTo(lift.x, lift.y);
            gr.moveTo(0,0);
            gr.lineStyle(1, 0x00FF00);
            gr.lineTo(gravitation.x, gravitation.y);
            gr.moveTo(0,0);
            gr.lineStyle(1, 0x0000FF);
            gr.lineTo(propellingForce.x, propellingForce.y);
            gr.moveTo(0,0);
            gr.lineStyle(2, 0xFFFF00);
            gr.lineTo(force.x, force.y);
        }
 
        private function keyboardHandler(event:KeyboardEvent):void
        {
            var value:Boolean = event.type == KeyboardEvent.KEY_DOWN;
 
            switch (event.keyCode)
            {
                case Keyboard.UP:
                    upFlag = value;
                    break;
                case Keyboard.DOWN:
                    downFlag = value;
                    break;
                case Keyboard.LEFT:
                    leftFlag = value;
                    break;
                case Keyboard.RIGHT:
                    rightFlag = value;
                    break;
            }
        }
    }
}

Старый 07.02.2011, 18:58
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 26  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
alatar не выдержал )

Старый 07.02.2011, 19:07
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 27  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от samana Посмотреть сообщение
alatar не выдержал )
Так нагляднее

Старый 07.02.2011, 19:27
Vansimar вне форума Посмотреть профиль Отправить личное сообщение для Vansimar Найти все сообщения от Vansimar
  № 28  
Ответить с цитированием
Vansimar
 
Аватар для Vansimar

Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
у меня что то не получается его запустить(

Старый 07.02.2011, 19:33
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 29  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Так и думал, что следующим вопросом будет как это скомпилировать.
Судя по-всему вы компилируете в Flash Professional CSx.
Создайте новый документ, создайте рядом с ним текстовый файл airplane.as. Скопируйте код в airplane.as. Подключите airplane.as как documentClass к вашему документу.

Старый 07.02.2011, 19:53
Vansimar вне форума Посмотреть профиль Отправить личное сообщение для Vansimar Найти все сообщения от Vansimar
  № 30  
Ответить с цитированием
Vansimar
 
Аватар для Vansimar

Регистрация: Sep 2010
Адрес: Moscow
Сообщений: 473
как домой приеду выложу свой исходник кода,посмотрите что да как дописать

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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