Ferramentas de Usuário

Ferramentas de Site


dev_web:actionscript:hello_world_alternativa3d_e_flashdevelop

Hello World Alternativa3D & FlashDevelop

Como me estou a iniciar na Plataforma Flash Alternativa 3D e no seguimento de um tutorial de como executar a plataforma Alternativa3D e um dos seus demos no FlashDevelop, vamos iniciar a programação na Alternatviva3D, criando objectos nós mesmos.

Imports

Primeiro, vamos ter de importar as classes da Framework no nosso ficheiro Main.as. Ou seja, o aspecto da parte inicial do ficheiro, mesmo a seguir ao package{, temos algo como isto.

import alternativa.engine3d.controllers.CameraController;
import alternativa.engine3d.core.Camera3D;
import alternativa.engine3d.core.Object3D;
import alternativa.engine3d.core.Scene3D;
import alternativa.engine3d.display.View;
import alternativa.engine3d.materials.WireMaterial;
import alternativa.engine3d.primitives.Box;
import alternativa.utils.FPS;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

Depois, vamos definir uma cor para o fundo.

[SWF(backgroundColor="#000000", frameRate="100")]

Variáveis

Vamos declarar as variáveis necessárias.

private var scene:Scene3D;
private var view:View;
private var camera:Camera3D;
private var cameraController:CameraController;
private var box:Box;

Feito isto, vamos programar. ;-)

Function Main()

Temos apenas de adicionar uma linha de código.

addEventListener(Event.ADDED_TO_STAGE, init);

Function init(e:Event): void

Vamos adicionar a seguinte linha de código para que a função init() seja chamada apenas uma vez.

removeEventListener(Event.ADDED_TO_STAGE, init);

De seguida vamos criar a cena.

scene = new Scene3D();
scene.root = new Object3D();

Iniciada a cena, vamos adicionar-lhe um objecto. Neste caso um cubo.

box = new Box(100, 100, 100, 3, 3, 3);
box.cloneMaterialToAllSurfaces(new WireMaterial(1, 0xFFFFFF));
scene.root.addChild(box);

Para conseguirmos fazer sortir algum efeito de todas as linhas de código anteriores, temos de adicionar uma câmara e uma visualização.

camera = new Camera3D();
camera.x = 100;
camera.y = -150;
camera.z = 100;
scene.root.addChild(camera);
view = new View(); 
addChild(view); 
view.camera = camera;

Agora vamos ter de adicionar um controlador para a câmara.

cameraController = new CameraController(stage);
cameraController.camera = camera;
cameraController.setDefaultBindings();
cameraController.checkCollisions = true;
cameraController.collisionRadius = 20;
cameraController.lookAt(box.coords);
cameraController.controlsEnabled = true;

E temos os últimos preparativos.

FPS.init(stage);

Function onResize(e:Event):void

Adicionamos-lhe este código, para que a área de visualização da cena 3D se redimensione sempre que o objecto flash se redimensione.

view.width = stage.stageWidth;
view.height = stage.stageHeight;

Function onEnterFrame(e:Event):void

cameraController.processInput();
scene.calculate();

Conclusão

Iremos ter um resultado como este. Preview

dev_web/actionscript/hello_world_alternativa3d_e_flashdevelop.txt · Última modificação em: 2018/05/14 21:37 (edição externa)