我新的动作脚本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