![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 8
|
Здравствуйте!
Подскажите, пожалуйста. Мне нужно сделать план здания во flash, так, что при наведении мыши на каждое помещение выводится окно с информацией об этом помещении. Для этого я хочу создать в actionscript 3.0 функцию: function Main(e:MouseEvent):void{ var S:String; //Дальше нужно понять, над каким помещением //находится указатель мыши в данный момент, //чтобы понять, какой текст должен быть в комментарии //Для этого, я думаю, нужно использовать переключатель switch: switch(e){ case …: S = “Комментарий к помещению 1”; case …: S = “Комментарий к помещению 2”; } // Но не могу понять, как нужно его правильно организовать … } //Ну и потом вызываем эту функцию: NameArea.addEventListener(MouseEvent.ROLL_OVER,Main); Последний раз редактировалось nickolay08; 05.04.2010 в 11:56. |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 126
|
вроде правильно всё, только странно, что NameArea с большой буквы и то, что Main - обработчик события
и в чем вопрос я не понял, подробнее напишите |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 8
|
Цитата:
Main - это название функции. Цитата:
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
ps: отредактируйте свой первый пост - обрамите код тегами as3..
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 05.04.2010 в 10:51. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Или сложить строки комментариев в массив, так чтобы их индекс в массиве совпадал с id кнопки-помещения (id тогда не String конечно, а uint). Ну или использовать Dictionary, в котором строки привязать к самим кнопкам, а не к id. Тогда не придется писать громоздкий и унылый switch.
Я бы держал эти тексты в массиве в Room и сделал в Room метод, возвращающий текст по id, либо еще при создании экземпляров комнат каждой отдавал ее индивидуальное описание))
__________________
Reality.getBounds(this); |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
способов много, я просто показал наиболее приближённый к исходному варианту метод.
я бы использовал скорей всего
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 8
|
Спасибо за советы! Я попытался их исполнить, но у меня опять возникли проблемы. Извините за мои вопросы, которые вам, наверняка, кажутся глупыми - просто, опыта в actionscript у меня пока "0"...
В общем, в файле Room.as у меня получилось следующее: package main { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class Room extends MovieClip { public function ShowInfo(e:MouseEvent) { addEventListener(MouseEvent.ROLL_OVER, onROLLOVER); addEventListener(MouseEvent.ROLL_OUT, onROLLOUT); } private function onROLLOVER(evt:MouseEvent,n:uint){ Info.visible = true; Info.x = mouseX+10; Info.y = mouseY-50; Info.IP.text = getInfo(n); } private function onROLLOUT(evt:MouseEvent):void { Info.visible = false; } private var ArrInfo:Array = new Array( "Помещение1", "Помещение2", "Помещение3"); public function getInfo(n:uint):String { var str:String; return str = ArrInfo[n]; } } } А в основном файле если пишу: Info.visible = false; a2016.addEventListener(MouseEvent.ROLL_OVER, ShowInfo); //a2016 - название помещения Цитата:
Есть еще одна проблема, про которую я забыл написать раньше - помещений около 50 (это торговый центр) и нужно, чтобы в последствии можно было легко изменить комментарий к любому помещению, если сменится арендатор. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
смешались в кучу люди, кони..
1) почитайте конвенции кодирования AS3 2) Info относится к комнате? Скорей всего это внешняя панель. какого она делает в Room? 3) private var ArrInfo:Array - тоже не должен быть в комнате . введите в Room ф-цию init(str) и передайте извне туда строку подсказки, строку сохраните как свойство комнаты
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
nickolay08,
1. Перечень комнат описываете в roomInfo.xml, по каждой комнате: название, арендатор, размеры, положение на плане и что там Вам еще нужно 2. В основном fla'шнике делаете мувиклип Room, под который делаете отдельный маленький класс Room, в нем публичными переменными перечисляете все данные, которые надо ему (объекту класса Room) о себе знать и которые потом он должен светить, что не нужно светить - приватными. 3. После закачки roomInfo.xml, проходите xml в цикле, порождаете экземпляр Room'а для каждого элемента. При порождении в конструкторе передаете объекту все его данные. 4. По событию ROLL_OVER (я бы взял MOUSE_OVER) получаете e.target - это и есть объект класса Room целиком. Все, что нужно, это вывести во всплывающую панельку e.target.roomComment, e.target.roomOwner и т.д. Сделать это намного проще, чем выглядит на первый взгляд. ЗЫ. Вариант с массивом выглядит на первый взгляд тоже рабочим, но как только помимо комментариев к комнатам потребуется хранить еще что-нибудь, наступит хорошая головная боль. Последний раз редактировалось mikhailk; 06.04.2010 в 12:02. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 8
|
Подобную базу данных было бы просто чудесно создать, учитывая хотя бы даже просто последующие изменения. А можно, в таком случае, вместо xml пользоваться MySQL, учитывая, что сайт сделан на Joomla? Как-нибудь получится это связать с flash? Просто, xml надо еще выучить перед тем, как что-то на нем делать... мне пока, как видите, и экшнскрипта вполне хватает
Цитата:
Info - это символ типа Movie Clip, который вылазит и показывает информацию о помещении. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|