【问题标题】:Get object by its `id` in an AIR windowedApplication通过 AIR windowedApplication 中的“id”获取对象
【发布时间】:2011-03-23 19:00:39
【问题描述】:

可能有更好的方法来做到这一点...如果有,请提出建议。

我有一些调用 AIR 函数的 javascript。此 AIR 函数创建一个新的 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 元素?

【问题讨论】:

    标签: javascript flash apache-flex air


    【解决方案1】:

    简短的回答,你不知道。这不是 javascript,这是一种 OO 语言,因此,您需要改变您的思维过程。你想做什么?在空中应用程序中创建多个 html 窗口?如果您想使用基于 id 的方法,则需要将 id 和指向组件的指针存储在数据结构(如字典)中。

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

    然后您可以从那里添加一个仅保存/返回组件的函数。我不完全确定你的方法是什么以及你想要完成什么,但我的直觉告诉我你做的不对。

    【讨论】:

    • “但我的直觉告诉我你做的不对。”哈哈。非常真实!你的假设是正确的。我将创建几个 HTML 窗口,并通过 javascript 与它们进行交互。我刚刚写完一个getFrameById 方法,该方法循环遍历已添加的所有帧的数组,并在此过程中检查它们的ID。 Dictionary 完美。
    • 附带说明:Javascript 在某种程度上经常伪装成 OO 语言。现在我知道没有[可靠] 内置getById 我应该能够将我的javascript 应用程序近乎直接地移植到Actionscript。他们是可用的this.getChildByName("myid") 函数这一事实导致我走错了路。感谢您的帮助!
    • 我能确切地问一下你为什么要这样做吗?你想解决什么问题?
    • 基本上我只是在 AIR 中创建一个选项卡式浏览器
    • 哦,这很有道理,但是为什么需要他们互相交谈呢?我认为有更好的方法来做你想要完成的事情......
    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多