Как сделать вращающийся кубик на ActionScript3 в Flash ?

23.10.2014 - 1953 просмотрa ;)

Элементарно.

Мы будем использовать Alternativa3D 8.

Создаем в Flash новый проект типа ActionScript3. Тут же сохраняем.

Качаем Alternativa3D 8 в виде SWC билиотеки.

Добавляем ее в проект


Дальше создаем класс, назовем его altest

Нажав на карандашик попадаем в код.

Там вставляем вот такую хрень:

package  {
	import alternativa.engine3d.core.Camera3D;
	import alternativa.engine3d.core.Object3D;
	import alternativa.engine3d.core.Resource;
	import alternativa.engine3d.core.View;
	import alternativa.engine3d.materials.FillMaterial; //1
	import alternativa.engine3d.primitives.Box; //1
 
	import flash.display.Sprite;
	import flash.display.Stage3D;
	import flash.events.Event;
	public class alttest extends Sprite {
		private var rootContainer:Object3D = new Object3D();
 
		private var camera:Camera3D;
		private var stage3D:Stage3D;
		private var box:Box; //2
 
		public function alttest(){
 
			camera = new Camera3D(0.1, 10000);
			camera.view = new View(stage.stageWidth, stage.stageHeight);
			camera.rotationX = -120 * Math.PI / 180; //3
			camera.y = -800; //3
			camera.z = 400; //3
			addChild(camera.view);
			rootContainer.addChild(camera);
 
			box = new Box(500, 500, 500, 5, 5, 5); //4
			var material:FillMaterial = new FillMaterial(0xFF7700); //4
			box.setMaterialToAllSurfaces(material); //4
			rootContainer.addChild(box); //4
 
			stage3D = stage.stage3Ds[0];
			stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContextCreate);
			stage3D.requestContext3D();
		}
 
		private function onContextCreate(e:Event):void {
			for each (var resource:Resource in rootContainer.getResources(true)){
				resource.upload(stage3D.context3D);
			}
			stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
		}
 
		private function onEnterFrame(e:Event):void {
			box.rotationZ -= 0.01; //5
			camera.render(stage3D);
		}
	}
}
<br>

Сохраняем, Запускаем Ctrl-Enter

Вуаля.. Крутится кубик.

Задание выполнено.


Тут вставлен GIF, а на деле все офигеть как плавно. В Alternativa3D 8 можнно записать несколько миллионов полигонов и будет нормальный FPS.

В следующий раз мы попробуем управлять вращением кубика по нашему желанию.

Код ActionScript3 — ужасен, такого кашмара ООП я не встречал на просторах PHP =)

Код скопирован с сайта Alternativa3D 8.

Статьи из раздела, Видеочат рулетка