2011-11-01 1 views
0

버튼 객체에 동적 텍스트 필드가 있습니다. 텍스트 필드 "myText"의 이름을 지정했습니다. 어떻게 텍스트를 수정할 수 있습니까? myText에 액세스 할 수 없기 때문에 myButton.myText.text = "test";이 작동하지 않습니다.버튼 객체 내부의 동적 텍스트 필드 값 설정

+0

또한 2 년 전부터 플래시 코딩을 한 적이 없으므로 아마도 매우 빠른 수정 사항에 대해 사과드립니다. – Cyclone

답변

0

대체로 빈 버튼과 동적 텍스트 입력란이 포함 된 MovieClip을 만듭니다. 텍스트 필드에 mouseEnabled = false을 설정하면 버튼의 마우스 이벤트를 방해하지 않습니다.

편집 :
여기 그리고 사용자 정의 버튼 클래스의 예를 가끔 사용

package { 

import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.text.TextField 

public class CustomButton extends MovieClip { 

    public var t_label:TextField; 

    public function CustomButton() { 
     t_label.mouseEnabled = false; 
     mouseChildren = false; 
     buttonMode = true; 

     this.gotoAndStop("normal"); 
     addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); 
     addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); 
     addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
    } 

    public function setLabel(buttonLabel:String):void { 
     t_label.text = buttonLabel; 
    } 

    public function destroy():void { 
     removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver); 
     removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut); 
     removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
    } 

    protected function onMouseOver(e:MouseEvent):void { 
     this.gotoAndStop("over"); 
    } 

    protected function onMouseOut(e:MouseEvent):void { 
     this.gotoAndStop("normal"); 
    } 

    protected function onMouseDown(e:MouseEvent):void { 
     this.gotoAndPlay("down"); 
    } 

} 

가}

당신은 "정상"이라는 프레임이있는 무비 클립이 연결 할 수있다 "이상" 및 "아래로"동적 레이블이있는 일반 단추처럼 작동합니다.

다른 상태에 대한 텍스트 모양을 사용자 지정해야하는 경우 이벤트 처리기에서 그렇게 할 수 있습니다.

+0

버튼 상태가 변경된 후 텍스트 필드에서 색상을 변경하는 것을 어떻게 알 수 있습니까? upState의 검은 색 버튼에 흰색 텍스트가 있고 downState에 반전되어 있습니다. – Cyclone

+0

그렇지 않습니다. 단추 상태에 대한 텍스트 모양을 변경해야하는 경우 다른 방법을 사용해야합니다. MOUSE_OVER, MOUSE_OUT 및 MOUSE_DOWN 이벤트를 처리하고 이에 따라 텍스트 색상을 조정하는 사용자 정의 클래스를 작성할 수 있습니다. – Cadin

+0

마우스 움직임 대신 버튼 상태 변경을 처리 할 수있는 방법이 있습니까? – Cyclone

0

업데이트 답 :

내가 당신을 위해 두 가지 솔루션을 가지고 있지만, 하나는 당신은 단지 버튼에서 하나의 텍스트 필드와 다른 개체가 필요합니다.

1 :

당신이 당신의 버튼에서 단 하나의 텍스트 필드가있는 경우가 다음 버튼의 upState 속성은 텍스트 필드가 될 것입니다, 당신은 다음 직접 텍스트 속성을 설정할 수 있습니다

myButton.upState.text = "Click Me"; 
myButton.downState.text = "Click Me"; 
myButton.overState.text = "Click Me"; 

2 :

첫 번째 기술이 적용되지 않으면 솔루션이 좀 더 복잡해집니다.

먼저 라이브러리의 현재 프레임 내용을 포함하는 MovieClip을 만듭니다. 내보내기로 설정하고 클래스 이름 (TextHolder)을 지정하십시오. 그런 다음, 그 textLabel라는의 텍스트 속성을 설정 TextHolder 객체를 생성하고, 각 버튼 상태에 할당 할 수 있습니다 :

var buttonState:TextHolder = new TextHolder(); 
buttonState.myText.text = "Click me"; 
myButton.upState = myButton.downState = myButton.overState = myButton.hitTestState = buttonState; 

당신은 여러 가지 상태를 만들 다른 컬러 텍스트 말하고 싶은 경우에, 당신은 다른 개체를 만들어야합니다 다른 주에서는

var buttonState:TextHolder = new TextHolder(); 
var buttonStateOver:TextHolder = new TextHolder(); 
buttonState.myText.text = buttonStateOver.myText.text = "Hello"; 
buttonStateOver.x = 10; 
myButton.upState = buttonState; 
myButton.hitTestState = buttonState; 
myButton.downState = myButton.overState = buttonStateOver; 
+0

불행합니다. 고맙습니다! – Cyclone

+0

사실 나는 모든 것을하지 않고 작동하는 것을 실제로 발견했을 수 있으므로 올바른 것으로 표시되지 않았습니다. 내가 작동하지 못하면 다시 표시 할 것입니다. 'myButton.upState'는 유망한 것으로 보입니다 ... – Cyclone

+0

지금 바로 새로운 답을 쓰고 있습니다 ... – shanethehat