今天看了一下這個flash的引擎,官方的說明文檔。
http://wiki.fisixengine.com/index.php?title=YourFirstFisixApplication#The_physics_of_Fisix
我大概把它的意思說明一下,畢竟還沒完全弄清楚這個小玩意。(英語水準很差,O(∩_∩)O哈哈~)
一.使用Fisix開始:
Fisix Engine 引擎是一個非常棒的實體系統,應用于你的日常工程當中。這個引擎是基于ActionScript 3.0 的制作而來的。
當你實作這個引擎的時候,你首先建立一個FisixEngine,然後指定一些重力,阻力 還有一些反射面。然後建立一些物體到你的應用程式當中,接下來,通過指定對象物應用這些力,讓物體模拟出一個真實的實體效果出來。在開始之前,你首先要發揮你的創意,然後使用這個實體引擎。
二.我的第一個Fisx程式
當然使用這個引擎的創作是非常有趣的,但是你首先要做的事情還是要把這個環境配置好。我們使用Flex builder 來開始我們的第一個程式:
首先
1.打開flex
2.建立一個flash project
3.建立一個命名 如MyFisixDemo,然後選擇你的project
這個工程已經被建立了,你可以寫上以下的代碼像這樣,它繼承了Sprite類
package {
import flash.display.Sprite;
public class MyFisixDemo extends Sprite
{
public function MyFisixDemo()
{
}
}
}
接下來還需要做一些事情.
1.選擇這個工程屬性,
2.選擇'ActionScript Build Path'
3.切換标簽 選擇“'Library path' ”
4.點選'Add SWC... 導入Fisx 的swc
5.選擇你FisixEngine.swc 檔案的所在位置
如下圖:
添加swc元件後,我們可以開始創造我們的第一個應用程式。首先還是先把我們需要的包引入到應用程式當中。
import com.fileitup.fisixengine.collisions.ReactionModes;
import com.fileitup.fisixengine.core.FisixEngine;
import com.fileitup.fisixengine.core.Vector;
import com.fileitup.fisixengine.particles.WheelParticle;
import com.fileitup.fisixengine.primitives.Surface;
import com.fileitup.fisixengine.particles.CircleParticle;
這些類中 包括引擎包括 引擎核心類,粒子物體,碰撞類,常見圖形類
注意:這些類flex本身不存在的,需要我們手工import進去
進入代碼第一件事情首先修改一些swf一些預設方式,如大小,顔色等等
[SWF(width='600',height='400',backgroundColor='0xFFFFFF',frameRate='30')]
public class MyFisixDemo extends Sprite
三,引擎本身
3.1 接下來,我們想執行個體化我們的獨立實體引擎
var myEngine:FisixEngine = new FisixEngine();
3.2 對象世界
我們已經有了這個引擎為我們工作,而且可以添加一些力到我們能夠的對象去響應這些力
//添加一個表面
var surface1:Surface = myEngine.newSurface(new Vector(0,200),new Vector(500,350),10)
//設定這個表面的屬性,反彈力和阻力
surface1.bounce = 0.9;
surface1.friction = 0.5;
3.3 啟動我們的引擎:
//渲染我們的物體
myEngine.setRender(true);
myEngine.setRenderGraphics(graphics);
myEngine.startEngine(stage.frameRate);
代碼清單:
package {
import flash.display.Sprite;
import com.fileitup.fisixengine.core.FisixEngine;
import com.fileitup.fisixengine.collisions.ReactionModes;
import com.fileitup.fisixengine.core.Vector;
import com.fileitup.fisixengine.particles.WheelParticle;
import com.fileitup.fisixengine.primitives.Surface;
import flash.display.MovieClip;
[SWF(width='600',height='400',backgroundColor='0xFFFFFF',frameRate='30')]
public class MyFisixDemo extends Sprite
{
public function MyFisixDemo()
{
//Create an instance of our engine.
var myEngine:FisixEngine = new FisixEngine();
//turn on physical collision reactions
myEngine.setReactionMode(ReactionModes.PHYSICAL);
//set the gravity to pull down at a rate of 1 pixel per second
myEngine.setGravity(0, 1 * stage.frameRate)
//next, add a surface to the engine
var surface1:Surface = myEngine.newSurface(new Vector(0,200),new Vector(500,350),10)
//set the surface's physical properties
surface1.bounce = 0.9;
surface1.friction = 0.5;
//add a circle particle to the surface at position 200,100 with a radius of 50 pixels
var particle1:WheelParticle = myEngine.newWheelParticle(200,100,50);
particle1.bounce = 0.7;
particle1.friction = 0.5;
//turn on primitive rendering
myEngine.setRender(true);
//tell the engine where to render to
myEngine.setRenderGraphics(graphics);
//start the engine
myEngine.startEngine(30);
}
}
}
運作效果:建立了一個反射面,一個滾軸。
這個隻是一個簡單的執行個體,我們還可以繼續添加更多的效果到我們的程式當中。