Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Fazer77777
3 / 3 / 1
Регистрация: 29.06.2012
Сообщений: 45
1

Работа PhysicsEditor для Box2d в FlashDevelop

16.07.2013, 17:38. Просмотров 608. Ответов 0
Метки нет (Все метки)

Добрый день. Учусь пользоваться PhysicsEditor для Box2d, рассматриваю пример. Сам исходник урока в Flash CS, пробую запустить проект в FlashDevelop не выходит. В общем, помогите, как правильно их заэмбедить в коде.
Делаю так:
Main.as
Кликните здесь для просмотра всего текста
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package {
    // импорты классов Flash
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getDefinitionByName;
import flash.display.DisplayObject;
 
// импорты классов Box2d
import Box2D.Dynamics.Joints.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.Math.*;
 
// импорт данных о шейпах
import PhysicsData;
 
    public class Main extends Sprite {
 
        [Embed(source = 'floor.png')] public static const Floor:Class;  
        [Embed(source = "drink.png")] public static const Drink:Class;  
        [Embed(source = "bkg_cor.png")] public static const Bkg_cor:Class;  
        [Embed(source =  "hamburger.png")] public static const Hamburger:Class; 
        [Embed(source =  "hotdog.png")] public static const Hotdog:Class;   
        [Embed(source = "icecream.png")] public static const Icecream:Class;    
        [Embed(source =  "icecream2.png")] public static const Icecream2:Class;     
        [Embed(source =  "icecream3.png")] public static const Icecream3:Class; 
 
public var nextSprite:Number=10;
 
// создадим объект, который содержит данные о шейпах
public var physicsData:PhysicsData = new PhysicsData();
 
// создадим мир Box2D, настроим вектор гравитации
public var world:b2World = new b2World(new b2Vec2(0, 10.0), true);
 
public function Main():void {
 
 
 
     // Вытаскиваем картинку из скомпиленных ресурсов
     var artClass:Class = getDefinitionByName("floor") as Class;
 
     addChild(new artClass() as DisplayObject);
 
 
     // Создаем объект DisplayObject для добавления его на сцену  
     var bitmap:Bitmap = new Bitmap(new artClass(0, 0), "auto", true);
 
     // Создаем физическое тело из класса с данными о шейпах
     var body:b2Body=physicsData.createBody("floor",
                                            world,
                                            b2Body.b2_staticBody,
                                            bitmap);
 
     // Настраиваем начальное положение тела
     body.SetPositionAndAngle(new b2Vec2(0,337/physicsData.ptm_ratio), 0);
 
     // Добавляем изображение на сцену
     addChild(bitmap);
 
 
     // Добавляем слушатель события ENTER_FRAME,
     // для обновления спрайтов и тел
     addEventListener(Event.ENTER_FRAME, update, false, 0, true);
 
}
//Эта функция добавляет новые спрайты на сцену
public function addNewSprites():void {
 
     // Спрайт добавляется только каждый 30 кадр
     nextSprite--;
     if(nextSprite > 0)
     {
         return;
     }
     nextSprite = 30;
 
     // имена предметов/спрайтов, которые мы используем
     var items:Array=["hamburger",
                      "drink",
                      "icecream",
                      "icecream2",
                      "icecream3"];
 
     // Выбираем случайный объект
     var name:String=items[Math.floor(Math.random()*items.length)];
 
     // Вытаскиваем картинку из скомпиленных ресурсов
     var artClass:Class = getDefinitionByName(name) as Class;
 
     <b>addChild(new artClass() as DisplayObject);b>
 
     // Создаем объект DisplayObject для добавления его на сцену  
     var bitmap:Bitmap = new Bitmap(new artClass(0, 0), "auto", true);
 
     // Создаем физическое тело из класса с данными о шейпах
     var body:b2Body=physicsData.createBody(name,
                                            world,
                                            b2Body.b2_dynamicBody,
                                            bitmap);
 
     // Устанавливаем случайную начальную позицию
     body.SetPositionAndAngle(new b2Vec2(Math.random()*14,-2), 0);
 
     //  Добавляем изображение на сцену
     addChild(bitmap);
}
 
// эта функция запускает механизм симуляции физики
// и обновляет позиции и вращение спрайтов, в соответствии с позициями 
// и вращением тел, участвующих в симуляции
public function update(e : Event):void {
     // шаг времени мира
     world.Step(1 / 30, 10, 10);
 
     world.ClearForces();
 
     // добавляем новые спрайты в мир
     addNewSprites();
 
     // обновляем скины тел
     var Body:b2Body = world.GetBodyList();
     for ( ; Body; Body = Body.GetNext()) {
         if (Body.GetUserData() is Bitmap) {
 
             // получаем ссылку на скин тела
             var bitmap:Bitmap=Body.GetUserData() as Bitmap;
 
             // обновляем положение скина
             bitmap.x=Body.GetPosition().x*physicsData.ptm_ratio;
             bitmap.y=Body.GetPosition().y*physicsData.ptm_ratio;
 
             //обновляем вращение спрайта
             bitmap.rotation = Body.GetAngle() * (180/Math.PI);
                }
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2013, 17:38
Ответы с готовыми решениями:

Работа Preloader-а в связке Flash CSx и FlashDevelop
Доброго времени суток. Возникла такая проблема, при импорте изображения...

Настроить содержимое swc для работы во FlashDevelop
Вобщем проблема использования мувиков и классов с fla в FD. Что делаю не так? В...

FlashDevelop: изменить порт по умолчанию для сервера neko
Как переделать запуск WEB сервера neko ? нужно переписать порт (по...

FlashDevelop Настройка
Здравствуйте, почему у меня не выводит текст при помощи Trace? может что то...

Разработка на Haxe во FlashDevelop
Как из под flashdevelop создать приложение для android ? Что нужно установить...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 17:38

Русская локаль в Flashdevelop?
Добрый день. Вопрос не по ActionScript, но очень близко связан, а именно по...

FlashDevelop и Adobe Animate
Зравствуйте, как же связать FlashDevelop и Adobe Animate ? хочю что бы я мог...

Использование fla ресурсов в FlashDevelop
Собственно проблемма: Создаю swc файл, содержащий в себе Symbols с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru