2011-03-23 48 views
0

可能有更好的方法來做到這一點...所以請建議,如果有的話。通過其AIR中的`id`獲取對象windowedApplication

我有一些調用AIR函數的JavaScript。這種空氣的功能創建一個新的HTML元素,並將其添加到「舞臺」,例如:

// guid is the ID given to the new window (HTML element) by javascript 
private function createNewWindow(guid:String):void { 
    var frame:HTML = new HTML(); 
    frame.id = guid; 

    addElement(frame); 
} 

現在我也得到了其基於其ID框架的location功能...這是我正在掙扎。

// set the location of the window referenced by it's id (guid) 
private function setLocation(guid:String, location:String):void { 
    // psuedocode. Obviously it won't work. 
    stage.getById(guid).location = location; 
} 

那麼,我該如何根據ID 「得到」 我的HTML元素?

回答

1

簡短的回答,你沒有。這不是JavaScript,這是一個面向對象的語言,因此,你需要改變你的思維過程。你想做什麼?在空氣應用程序中創建幾個html窗口?如果你想擁有一個基於id的方法,你需要將id和指向該組件的指針存儲在數據結構中(比如字典)。

private var _components:Dictionary = new Dictionary(); 
this._components['someId'] = someComponent; 

從那裏你可以添加一個功能,只保存/返回組件。我不完全確定你的方法和你想要完成什麼,但是我的直覺告訴我你沒有做正確的事情。

+0

「但是我的直覺告訴我你沒有做正確的事情。」哈哈。非常真實!你的假設是正確的。我將創建幾個HTML窗口,並將與他們互動VIA javascript。我剛剛完成了一個'getFrameById'方法的編寫,該方法循環遍歷所有已添加的框架的數組,並在途中檢查它們的ID。 '字典'是完美的。 – 2011-03-23 20:19:47

+0

另外還有一個提示:Javascript在某種程度上通常會被當作面向對象的語言。現在我知道沒有[可靠的]內置'getById',我應該可以將Actionscript的javascript應用程序的接近直接端口。他們是'this.getChildByName(「myid」)''可用的函數的事實是導致我錯誤的路徑。謝謝你的幫助! – 2011-03-23 20:26:20

+0

我能問一下'你爲什麼這麼做嗎?你想解決什麼問題? – 2011-03-23 20:45:39