Более одного titleWindow в приложении Flex - PullRequest
1 голос
/ 30 марта 2011

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

Я работаю над приложением 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 Ответ

1 голос
/ 30 марта 2011

Звучит так, будто тебя только что бросили в глубокий конец.Вообще говоря, нет никаких ограничений на количество окон заголовков, которые вы можете открыть, класс 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 или другой не-ООП-язык). Объектно-ориентированное программирование занимает немного времени, чтобы прийти в себя, но имеет гораздо больше смысла, когда дело доходит до решения реальных проблем, как только выпоймите это, в основном вы настраиваете описания и отправляете сообщения между объектами, используя вызовы методов, а когда вы определяете класс, через AS или MXML вы определяете методы (порядок определений методов / свойств не имеет значения,все еще процедурный, как шаг за шагом в методах, но порядок объявления методов или свойств не имеет никакого эффекта).

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

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

...