나는 액션 스크립트 OOP에 새로운 그리고 난 내가 달러를 사용하도록 I.
를 제거해야 내가액션 스크립트 3 정적 메서드
I.$(button).bind('click',clickButton).bind('rollover',overButton).bind('rollout',outButton)
먼저이 방법을 체인 방법이 예와 같이 알 필요가 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 프로젝트를 확인하십시오. –
나는 이것이 나쁜 상황에 처해 있다는 것을 안다. 나는이 두 가지 상황을 해결할 수있는 해결 방법이 있는지 알아야 할 필요가있다. –
익숙한 은유로 사용하고있는 언어를 구속하는 것은 좋은 생각이 아닙니다. (특히 은유의 상당 부분이 언어의 약점이 아니라 강점에서 비롯된 경우). 그러나 $를 패키지 또는 클래스 이름으로 사용하는 방법을 알아낼 수 있다면 이름 공간으로 작동 할 것입니다. 이것이 네임 스페이스로서 JS에서 어떻게 작동 하는지를 보여줍니다. 또는 변수 $를 패키지 또는 클래스로 설정할 수 있습니다. –