Более одного titleWindow в приложении Flex

Я ГИС-аналитик, который был переведен на должность программиста-аналитика. Это был тяжелый переход для меня, так как у меня не было большого опыта программирования, но я был вовлечен в это.

Я работаю над приложением Flex на странице JSP. По сути, это сетка 3х2, в которой есть изображения и текст. Я пытаюсь сделать так, чтобы на этой странице было несколько ссылок на 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>

Ниже приведен код заголовка окна. Этот код работает до сих пор!

<?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 ответ

Решение

Похоже, тебя только что бросили в глубокий конец. Вообще говоря, нет никаких ограничений на количество окон титров, которые вы можете открыть, класс PopUpManager обрабатывает любой UIComponent, который вы говорите, чтобы он открывался как всплывающее окно, и один из аргументов статических методов.createPopUp или addPopUp в менеджере примет модальный параметр, который указывает, должно ли пользовательское взаимодействие быть заблокировано (указано размытием приложения) или окно должно быть просто показано. Скорее всего, эта ошибка связана с вашим расширением TitleWindow (SimpleTitleWindowExample), которое вы можете опубликовать в этом коде. Также в качестве отправной точки по теме ознакомьтесь со следующей документацией:

Дженерал Флекс:

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() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/PopUpManager.html() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/PopUpManager.html()

Подсказки: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/ToolTipManager.html() http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/managers/ToolTipManager.html()

Если у вас все еще есть проблемы, определенно опубликуйте код для пользовательского TitleWindow, а также какую версию SDK вы используете, чтобы я мог попытаться скопировать.

РЕДАКТИРОВАТЬ: Ладно, увидев, что остальная часть вашего кода очищает его... вы не можете иметь две функции с одинаковым точным именем, так что в вашем коде у вас есть showWindow как функция, которая объявляется два раза (я не уверен как это происходит после компиляции, я бы предположил, что компилятор будет достаточно умен, чтобы увидеть эту ошибку до выполнения, но это именно то, что есть). Измените другое showWindow на что-то вроде showOtherWindow или что-то в этом роде. Выглядит так, как будто вы пришли из процедурного фона программирования (C или другой не-ООП-язык). Объектно-ориентированное программирование занимает немного времени, чтобы прийти в себя, но имеет гораздо больше смысла, когда дело доходит до решения реальных проблем, как только вы поймите это, в основном вы настраиваете описания и отправляете сообщения между объектами, используя вызовы методов, а когда вы определяете класс, через AS или MXML вы определяете методы (порядок определений метода / свойства не имеет значения, все еще процедурный, как шаг за шагом в методах, но порядок объявления метода или свойства не имеет никакого эффекта).

Это может быть полезно: http://www.codeproject.com/KB/architecture/OOP_Concepts_and_manymore.aspx

Я в основном на противоположном конце спектра с точки зрения навыков, у меня есть формальное образование в университете информатики DePaul, но в настоящее время я занимаюсь большим количеством флеш-кода Google Maps, поэтому я нахожу себя все больше и больше необходимость понимать датумы и другую специальную информацию ГИС (просто подумал, что было бы интересно найти кого-то на том же перекрестке, но идти другим путем:).

Другие вопросы по тегам