【问题标题】:More than one titleWindow in a Flex ApplicationFlex 应用程序中的多个 titleWindow
【发布时间】:2011-03-30 16:57:15
【问题描述】:

我是一名 GIS 分析师,已调到分析师程序员职位。这对我来说是一个艰难的过渡,因为我没有太多的编程背景,但我被投入其中。

我正在开发 jsp 页面内的 Flex 应用程序。本质上,它是一个包含图像和文本的 3x2 网格。我想要做的是在此页面中有多个 titleWindow 引用,以便在单击图像时打开一个 titleWindow。 (如果有人有更好的想法,特别是如果它与悬停有关,我对此非常开放!)目前我正在为一张图像工作。但是,当我尝试添加第二个功能时,它会出错。 “错误 1021:重复的函数定义” 下面是调用 titleWindow 的主页的完整代码。下面的代码给出了错误 1021。

<?xml version="1.0" encoding="utf-8"?>

    <![CDATA[
        import flash.geom.Point;

        import mx.containers.TitleWindow;
        import mx.core.IFlexDisplayObject;
        import mx.managers.PopUpManager;

        import windows.SimplePopupWindow;   

        private var point1:Point = new Point();

        private function showWindow():void {
            var login:SimpleTitleWindowExample=SimpleTitleWindowExample(PopUpManager.createPopUp( this, SimpleTitleWindowExample , true));


            point1.x=131;
            point1.y=119;                
        point1=roadStatus.localToGlobal(point1);            
        }

        private var point2:Point = new Point();

        private function showWindow():void {
            var login:SimpleTitleWindowExampleFlood=SimpleTitleWindowExampleFlood(PopUpManager.createPopUp( this, SimpleTitleWindowExampleFlood , true));

            point2.x=289;
            point2.y=119;                
            point2=floodplain.localToGlobal(point2); 

        }           
    ]]>

</fx:Script>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:BorderContainer x="10" y="0" width="750" height="600" backgroundColor="#BBB082" backgroundAlpha="1.0" cornerRadius="20" borderColor="#E8DBA7">
    <s:Panel x="10" y="10" width="728" height="578" cornerRadius="20" chromeColor="#983D3A" borderColor="#F1EFE7" backgroundColor="#BBB082">
        <mx:Image x="131" y="119" width="150" height="115" source="file://GIS Map Portal/images/Map Images/SJCRoadStatus2_small.jpg" id="roadStatus" click="showWindow();"/>
        <mx:Image x="289" y="119" width="150" height="115" source="file://GIS Map Portal/images/Map Images/SJCRoadStatus_small.jpg" id="floodplain" click="showWindow();"/>
        <mx:Image x="447" y="119" width="150" height="115" source="file://GIS Map Portal/images/Map Images/SJCRoadStatus2_small.jpg"/>
        <s:Label x="131" y="242" text="SJC Road Status"/>
        <s:Label x="289" y="242" text="SJC Floodplain"/>
        <s:Label x="447" y="242" text="Assessor's Parcels"/>
        <mx:Image x="131" y="262" width="150" height="115" source="file://GIS Map Portal/images/Map Images/SJCRoadStatus_small.jpg"/>
        <mx:Image x="289" y="262" width="149" height="115" source="file://GIS Map Portal/images/Map Images/SJCRoadStatus2_small.jpg"/>
        <mx:Image x="446" y="262" width="151" height="115" source="file://GIS Map Portal/images/Map Images/SJCRoadStatus_small.jpg"/>
        <s:Label x="131" y="385" text="Label"/>
        <s:Label x="289" y="385" text="Label"/>
        <s:Label x="446" y="385" text="Label"/>
        <s:Label x="229" y="24" text="San Juan County Web Maps" fontFamily="Calvin and Hobbes" fontSize="25"/>

    </s:Panel>
</s:BorderContainer>

下面是titleWindow 代码。这段代码到目前为止有效!

<?xml version="1.0" encoding="utf-8"?>

<mx:Script>
    <![CDATA[       
        import mx.managers.PopUpManager;
        import mx.controls.Text;

        // A reference to the TextInput control in which to put the result.
        public var loginName:Text;

        // Event handler for the OK button.
        private function returnName():void {
            //loginName.text="Name entered: " + userName.text; 
            PopUpManager.removePopUp(this);
        }
    ]]>
</mx:Script>

<mx:HBox width="323" height="147" borderColor="#E8DBA7" dropShadowVisible="true">
    <mx:Text text="The San Juan County GIS Department maintains aninteractive web map dedicated for researching county roads, but also includes city limits, lakes and rivers, and other geographic data.&#xd;" width="319" height="76" textAlign="center" color="#FFFFFF"/>
</mx:HBox>

<mx:HBox>
    <mx:Button label="Go" click="navigateToURL(new URLRequest(''), 'quote')"/>
    <mx:Button label="Back" click="PopUpManager.removePopUp(this);"/>
</mx:HBox>

问题:我需要在上面更改哪些代码才能添加多个 titleWindow(最多 6 个),或者我可以使用哪些代码进行悬停以打开“窗口”还是工具提示?

如果有人有任何想法或可以指导我,那就太好了。我很感激!

【问题讨论】:

    标签: apache-flex flash-builder mousehover showwindow


    【解决方案1】:

    听起来你刚刚陷入困境。一般来说,您可以打开的标题窗口的数量没有限制,PopUpManager 类处理您告诉它作为弹出窗口打开的任何 UIComponent,并且管理器上的 .createPopUp 或 addPopUp 静态方法的参数之一将采用modal 参数,它指定是否应该阻止用户交互(通过模糊应用程序来表示)或者是否应该只显示窗口。看来这个错误是由您对 TitleWindow 的扩展(SimpleTitleWindowExample)引起的,您可以发布该代码吗?此外,作为该主题的起点,请查看以下文档:

    一般弹性:

    http://www.adobe.com/devnet/flex/videotraining.html

    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/index.html

    ^ 请注意屏幕顶部的运行时和产品选择选项,根据您正在构建的 SDK 进行选择(或根据功能选择 SDK)

    弹出管理器: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/PopUpManager.html#createPopUp() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/PopUpManager.html#addPopUp() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/PopUpManager.html#removePopUp()

    工具提示: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/ToolTipManager.html#createToolTip() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/ToolTipManager.html#destroyToolTip()

    如果您仍然遇到问题,请务必发布自定义 TitleWindow 的代码,以及您使用的 SDK 版本,以便我可以尝试复制。

    编辑: 啊好吧,看到你的代码的其余部分清除它......你不能有两个具有相同确切名称的函数,所以在你的代码中你有 showWindow 作为一个被声明两次的函数(我不确定这是怎么回事正在通过编译,我会想象编译器会足够聪明,可以在运行时之前看到这个错误,但事实就是这样)。将另一个 showWindow 更改为类似于 showOtherWindow 或类似的东西。看起来你也有过程编程背景(C 或其他非 OOP 语言)理解它,基本上你是在使用方法调用在对象之间设置描述和发送消息,当你通过 AS 或 MXML 定义一个类时,你正在定义方法(方法/属性定义的顺序在功能上并不重要,事情是仍然是程序性的,就像在方法中一步一步一样,但方法声明或属性声明的顺序无效)。

    这可能会有所帮助: http://www.codeproject.com/KB/architecture/OOP_Concepts_and_manymore.aspx

    就技能而言,我基本上处于另一端,我在德保罗大学接受了计算机科学的正规教育,但在我目前的职位上,我正在做很多谷歌地图的 flash 代码,所以我发现自己越来越需要了解 Datums 和其他 GIS 专业信息(只是觉得在同一个十字路口找到某人但走另一条路很有趣:)。

    【讨论】:

    • 谢谢,我会浏览这些链接。我更新了原始帖子中的代码以包含所有内容。再次感谢!
    • 非常感谢!我只是认为 showWindow 功能是一成不变的,所以我什至没有尝试更改它。我有很多要学习的!我发现编码很像基准,那里有很多,你需要找到一个并坚持下去。我使用 ESRI 软件,所以我不会过多地使用 Google Maps。谢谢你让我直截了当,我开始发疯了!不确定您是否看过,但 GIS Stack Exchange 也是一个很棒的地方。
    • @Evan 没问题,很高兴我能提供帮助,我会检查 Stack Exchange 以及感谢您的提示。这也更清楚地解释了我在上面试图阐明的关于 OOP 与过程编程的内容en.wikipedia.org/wiki/Object-oriented_programming 很好,这些事情现在正在被提出,我正试图增加我的一个好朋友(谁是'不是真正的技术人员)自己做一些弹性工作(主要是为他的乐队网站)所以最好有一些资源在一起,如果我将它们发布在我的网站上,我会在这里放一个链接作为好吧。
    • 感谢您的链接,它有助于进一步阐明 OOP。在编程方面,我一直并且仍然非常程序化。这需要一些时间来适应。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2012-06-17
    • 2011-08-03
    • 2010-11-12
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多