Flex应用程序中的多个titleWindow

时间:2011-03-30 16:57:16

标签: flex flash-builder mousehover showwindow

我是一名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个),或者我可以使用哪些代码来悬停以打开“窗口”还是工具提示?

如果有人有任何想法或者可以指导我,那将是伟大的。我很感激!

1 个答案:

答案 0 :(得分:1)

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

General Flex:

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

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

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

PopUpManager中: 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

我在技能方面基本上处于相反的一端,我从DePaul大学接受过计算机科学的正规教育,但是我目前的职位是做了很多google地图flash代码,所以我发现自己越来越多需要了解基准和其他GIS专业信息(只是认为在同一个交叉路口找到某人但却走另一条路是有趣的。)。