目前已接觸的DisplayObject包含了PIXI.Graphics()
的圖像繪製、PIXI.Text()
的文字建立,這些物件都能將互動屬性interactive
設定為true
值,定義物件的互動效果。
而DisplayObject這些物件除了interactive
外,還有其他屬性可以直接定義,像是可以使用x
、y
屬性,可以直接定義物件的位置、rotation
定義了旋轉角度、alpha
定義不透明度,除了直接定義這些屬性外,也可於之後利用PIXI.Ticker
將定期渲染的機制加進場景,搭配運算機制來建立基礎的小動畫。
變更物件的位置、旋轉角度、設定不透明度與其他屬性的方式很簡單,直接利用.
把建構出的物件的屬性定義新的數值即可。
myObj.x = 200;
myObj.y = 200;
myObj.rotation = 45 - 2 * Math.PI;
myObj.alpha = 0.5;
除了直接控制物件的定位外,也可透過在場景中建立container
的方式,可以當作圖層概念,利用各層container去管理物件之間的位置,對於重複或多類型複雜的圖像與場景來說,是個很合適的方式。
//建立基礎場景
let app = new PIXI.Application({ width:800, height: 400 })
document.body.appendChild(app.view);
//建立container並放入場景中
const container = new PIXI.Container();
app.stage.addChild(container);
//產生物件、放置於container中
let myObj = new PIXI.Graphics();
myObj.beginFill(0xffdd00);
myObj.drawCircle(0,0,50);
container.addChild(myObj);
//定位container
container.x = 200;
container.y = 200;
另外,除了數值外,也可以運用數學預算輕鬆達成置中效果;另外,因為初始建立的container的軸心為左上角位置,因此要達到正中央,可以在把container的pivot位置調整至container中間,之後用於等比例放大縮小、以中心旋轉角度等會更加方便。
//調整container至場景中心
container.x = app.screen.width / 2;
container.y = app.screen.height / 2;
//調整container的軸心位置
container.pivot.x = container.width / 2;
container.pivot.y = container.height / 2;
另外,container也是DisplayObject一員,所以也可以進行x
、y
、rotation
屬性控制外,也可以將互動屬性interactive
設定為true
值,定義物件的互動效果囉!