我新的動作腳本OOP,我需要知道我怎麼鏈條像這個例子方法有動作腳本3靜態方法
I.$(button).bind('click',clickButton).bind('rollover',overButton).bind('rollout',outButton)
首先,我需要刪除I.
使用美元只簽名像jQuery :)來選擇MovieClip並對其應用任何操作第二個問題,我有因爲這種方式我使用靜態方法操作腳本限制我只使用靜態屬性保存最後一個誰在這裏調用動作是要知道我的意思:
package com.MAIN
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class I extends Sprite
{
private static var cSelector:Sprite;
public static function $(selector:Sprite)
{
cSelector = selector
return I;
}
public static function alpha(val:Number)
{
cSelector.alpha = val;
return I;
}
// bind mouse event to the element
public static function bind(EventStr,func:Function)
{
var func1:Function = function(e:MouseEvent){
func(cSelector);
}
// select the event from the list
if(typeof(EventStr) == 'string'){
// map the events in lowercase
var events:Object = {click:'CLICK',rollover:'ROLL_OVER',rollout:'ROLL_OUT',dblclick:'DOUBLE_CLICK',mousedown:'MOUSE_DOWN',mousemove:'MOUSE_MOVE',mouseout:'MOUSE_OUT',mouseover:'MOUSE_OVER',mouseup:'MOUSE_UP',mousewheel:'MOUSE_WHEEL'};
// check if the event exists in the list
if(events[EventStr] && MouseEvent[events[EventStr]]){
cSelector.addEventListener(MouseEvent[events[EventStr]],func1);
}
}else if(typeof(EventStr) == 'object'){
// add the event
cSelector.addEventListener(EventStr,func1);
}
return I;
}
public static function remove()
{
cSelector.parent.removeChild(cSelector);
return I;
}
}
}
靜態proerties和方法[壞習慣](http://misko.hevery.com/code-reviewers-引導/缺陷 - 脆弱 - 全局狀態 - 單例/)以面向對象的語言。要創建一個即時API,每個方法都需要返回一個具有該方法的相同類型的對象。查看開源Mockalate項目的例子。 – 2013-03-05 16:16:00
我知道這是不好的做法,我需要知道是否有任何解決方法來解決這兩個情況,我有? – 2013-03-05 16:22:16
嘗試將你使用的語言用於你習慣的隱喻(特別是當這個隱喻的大部分源於該語言的弱點而不是強項時)並不是一個好主意。但是如果你能弄清楚如何使用$作爲包或者類的名字,它將作爲一個命名空間,這就是JS的工作原理。或者,您可以將變量$設置爲包或類。 – 2013-03-05 16:26:07