2011-01-11 66 views
1

正常情況下,一個字符串對象的轉換如下。與鍵盤/文本框的交互請幫助

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

我們可以給它的屬性,如obj.x=100;但在一系列蜇傷的情況下

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

它西港島線不works.Actually我需要給屬性,這是一個目標路徑字符串 我做了什麼? 下面是代碼來獲得一個影片剪輯路徑:

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); 

} 

我想給屬性路徑

+0

嗨,夥計,我不知道你真的想做什麼。主要目的是什麼? – robertp 2011-01-11 11:55:25

+0

實際上我正在處理keybord交互。在這個時候,任何一個textfield都被按下了一個鍵。我想將char代碼傳遞給tat對象.. – Akhil 2011-01-11 12:27:26

+1

請修改問題或發表評論以添加更多的信息或者要求其他用戶澄清他們的答案。 – 2011-01-11 18:53:17

回答

2

有許多事情是尷尬的有關代碼:

  1. 不要比較對象的字符串值,以瞭解類的類型。使用is關鍵字:

    if (obj.parent is Stage) doSomething(); 
    
  2. 不要使用類名作爲參數名:的MouseEvent是一種!

    function targetMC (ev:MouseEvent) // ...more code 
    
  3. 它根據在調用它們,例如事件是名處理方法有用:

    function onMouseClick (ev:MouseEvent) 
    

    function mouseClickHandler (ev:MouseEvent) 
    
  4. 如果你能避免它,不要投到Object來訪問成員,但嘗試使用子類類型 - 它允許編譯器更有效地檢查您的代碼是否有錯誤。如果要輸出到您的對象的路徑

    var obj:DisplayObject = ev.target as DisplayObject; 
    
  5. ,使用實例名稱,而不是類型 - 你可能有一個以上的文本字段:由於在顯示列表中的所有對象是DisplayObject情況下,你可以使用這個!

    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

如果你需要一鍵通則charCode的文本字段,後者應該聽的KeyboardEvent和檢索事件的則charCode屬性信息
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

你的AS3的觀點是「不一樣」 ......例如,getChildByName不會將字符串轉換爲對象,它基本上會執行方法名稱指定的內容,它將使用其名稱作爲引用來檢索父級的子級。

它看起來像你正在適應你來自AS3的任何語言。我懷疑這會工作...