2011-01-11 2 views
1

입니다. 일반적으로 다음과 같이 문자열이 변환됩니다.keyboard/textfields와의 상호 작용은

var obj:object=getChildByName("string"); 

그리고 그것은 works.Actually 내가하는 대상 경로에 속성을 부여 할 필요가 없습니다 줘야

[objet Stage].[object MainTimeline].[object TextField] 

우리는 obj.x=100; 좋아하지만 따가워 일련의 경우에에 속성을 부여 할 수 있습니다 문자열 무엇을합니까 ??

addEventListener(MouseEvent.CLICK, targetMC); 
function targetMC(MouseEvent:Event):void 
{ 
var curinstance = MouseEvent.target.valueOf(); 
var targ:Object = curinstance.parent; 
var path = curinstance; 
do 
{ 
    if (targ == "[object Stage]") 
    { 
    path = targ + "." + path; 
    } 
    else 
    { 

    path = targ + "." + path; 
    } 

    targ = targ.parent; 
} while (targ); 


trace(path); 

} 

내가 경로에 속성을주고 싶습니다 : 다음은 동영상 클립의 경로를 얻을 수있는 코드입니다. 당신이 텍스트 필드에 키 charCode 값을 전달해야하는 경우

+0

안녕하세요, 당신이 정말로하려고하는 것이 확실하지 않습니다. 주요 목적은 무엇입니까? – robertp

+0

실제로 keybord 상호 작용을 다루고 있습니다.이 키를 텍스트 필드 중 하나를 누를 때. 나는 문자 코드에 문자 코드를 전달하고 싶습니다. – Akhil

+1

질문을 편집하거나 추가 정보를 추가하거나 의견을 게시하십시오 사용자가 답변을 명확하게 설명합니다. –

답변

2

숫자는 당신의 코드에 대한 어색 ...이 작동합니다 의심 :

  1. 클래스 유형에 대해 알아 개체의 문자열 값을 비교하지 마십시오. 매개 변수 이름으로 클래스 이름을 사용하지 마십시오

    if (obj.parent is Stage) doSomething(); 
    
  2. : 된 MouseEvent는 유형 인 is 키워드를 사용!

    function targetMC (ev:MouseEvent) // ...more code 
    
  3. 그것은 그들이 예를 들어, 호출에 관련된 사건에 따라 이름 핸들러 메서드에 유용합니다

    function onMouseClick (ev:MouseEvent) 
    

    또는

  4. 당신이 그것을 피할 수있는 경우

    function mouseClickHandler (ev:MouseEvent) 
    
  5. , 멤버에 액세스하려면 Object으로 캐스트하지 말고 하위 클래스 유형을 사용하십시오. 그러면 컴파일러에서 코드의 오류를보다 효과적으로 검사 할 수 있습니다. 표시 목록에있는 모든 개체는 DisplayObject의 인스턴스이기 때문에, 당신은이를 사용할 수 있습니다

    var obj:DisplayObject = ev.target as DisplayObject; 
    
  6. 당신이 출력 개체에 대한 경로를 원하는 경우, 유형 대신 인스턴스 이름을 사용 - 두 개 이상의 텍스트 필드가있을 수 있습니다 ! 당신의 답변을 지금

    private function getObjectPath (obj:DisplayObject) : String { 
        var path:String = obj.name; 
        if (obj.parent != null && !(obj.parent is Stage)) { 
         path = getObjectPath (obj.parent) + "." + path; 
        } 
        return path; 
    } 
    

다음으로 KeyboardEvent를 사용합니다.이것은 단지만큼 텍스트 필드가가로 작동 초점을 맞출 것

textField.addEventListener (KeyboardEvent.KEY_UP, onKeyUp); 

private function onKeyUp (ev:KeyboardEvent) : void { 
    var tf:TextField = ev.target as TextField; 
    var text:String = tf.text; 
    tf.text = text + String.fromCharCode(charCode); 
} 

주, 즉 사용자가 먼저 클릭하는 것입니다.

+0

@weltraumpirat 위 함수에서 getobjectpath()는 문자열을 기준으로 출력을 얻습니다. 특정 객체로 경로를 변환하려면 어떻게해야합니까? – Akhil

+0

여기에 tf.text에 문자열이 있지만 내 문제는 변환 된 /이 값을 집중된 텍스트 영역/textfied로 전달하는 것입니다. – Akhil

+0

안녕하세요. 위의 코드에서 나는이 [object stage]처럼된다. [objec Maintimeline]. [object moieclip] .. i texbioox와 같은 객체에 속성을 부여해야한다. – Akhil

0

, 후자는 KeyboardEvent입니다 듣고 AS3의
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

당신의 관점은 "다른"입니다 이벤트의 charCode 값 속성에서 정보를 검색해야 ... 예를 들어, getChildByName은 String을 Object로 변환하지 않으며, 기본적으로 메소드 이름의 상태를 나타내며, 참조로 이름을 사용하여 부모의 자식을 가져옵니다.

AS3에서 오는 언어를 변경하는 것처럼 보입니다. 나는 사물의

+0

@patrik 나는 방금 객체를 얻는 것에 대해 다 했어. 무슨 의미인지 알았어. 객체에 문자열을 변환하는 대안을 알고 있니?. – Akhil

+0

import flash.events.Event; var str : String = "Object (root) .mc_clip"; var 경로 : Object = str; btn.addEventListener (MouseEvent.CLICK, clickmouse); function clickmouse (ev : 이벤트) : void { \t path.gotoAndStop ("2"); } – Akhil