Round.js
goog.provide('HelloLimeJS.Round'); goog.require('lime.Circle'); /** Constructor */ HelloLimeJS.Round = function(r) { // call parents constructor goog.base(this); this.setRadius(r); }; /** 繼承*/ goog.inherits(HelloLimeJS.Round, lime.Circle); /** 新增 function */ HelloLimeJS.Round.prototype.setRadius = function(r) { this.setSize(r*2, r*2); };
定義完 Round.js,記得要執行下列指令將 HelloLimeJS.Round 註冊到 deps.js。
python bin/lime.py updateHelloLimeJS.js
goog.provide('HelloLimeJS'); goog.require('lime.Director'); goog.require('lime.Scene'); goog.require('lime.Layer'); goog.require('HelloLimeJS.Round'); HelloLimeJS.gameW = 600; HelloLimeJS.gameH = 400; /** 程式進入點 */ HelloLimeJS.start = function() { HelloLimeJS.director = new lime.Director(document.getElementById('game'), HelloLimeJS.gameW, HelloLimeJS.gameH); HelloLimeJS.director.makeMobileWebAppCapable(); HelloLimeJS.mainScene(); }; /** 主場景 */ HelloLimeJS.mainScene = function() { var scene = new lime.Scene(); var layer = new lime.Layer().setPosition(0,0); scene.appendChild(layer); var sprite = new lime.Sprite().setAnchorPoint(0,0).setPosition(0,0).setFill('#ff9').setSize(HelloLimeJS.gameW, HelloLimeJS.gameH); layer.appendChild(sprite); // 自訂 class var circle = new HelloLimeJS.Round(25).setFill('#06f').setAnchorPoint(0,0).setPosition(0,50); layer.appendChild(circle); var leftStep = 5; // 間隔一定時間呼叫 lime.scheduleManager.scheduleWithDelay(function(){ var p = this.getPosition(); if (p.x > 550 || p.x < 0) { leftStep = -leftStep; } if (p.x >= 550) { circle.setRadius(15); } else if (p.x <= 0) { circle.setRadius(25); } p.x += leftStep; this.setPosition(p); }, circle, 10); HelloLimeJS.director.replaceScene(scene); }; goog.exportSymbol('HelloLimeJS.start', HelloLimeJS.start);
lime.Node
在 LimeJS,lime.Node 是所有顯示物件的根物件,也就是可以在畫面顯示的物件都是繼承自 lime.Node,例如 lime.Circle 或 lime.Sprite,甚至 lime.Director、lime.Scene 或 lime.Layer 也都是 lime.Node 子類別,所以大部分與顯示相關的 API 都是定義在 lime.Node 裡。
// 上下層 var parent = new lime.Node(); var child = new lime.Node(); parent.appendChild(child); // 尺寸 var node = new lime.Node().setSize(50,50); var size = node.getSize(); size.width += 100; node.setSize(size); node.setSize(new goog.math.Size(100,50)); // 有趣的是,圖片會依 size 縮放,可以搭配下面的畫質 API 使用 node.setFill('images/a.png').setSize(200,150); // 位置,與下面的錨定點 API 很有關系 var node = new lime.Node().setPosition(200,100); var pos = node.getPosition(); // return object pos.y = 150; node.setPosition(pos); node.setPosition(new goog.math.Coordinate(50,50)); // 比例,以錨定點為中心 var node = new lime.Node().setScale(1,2); node.setScale(0.7); // 雙向 node.setScale(new goog.math.Vec2(1,2)); // 旋轉,以描定點為中心 var node = new lime.Node().setRotation(90); // 畫質 // 用於圖片以小於原尺寸顯示時,降低畫質可以提昇效能 // 接受 0 到 1 的數值,大於 1 視為 1 var node = new lime.Node().setQuality(0.5); // 錨定點,影響位置與旋轉 API var node = new lime.Node().setAnchorPoint(0,0);有關於錨定點與位置請看 LimeJS 的 setAnchorPoint() 與 setPosition()。
---
---
---
沒有留言:
張貼留言