Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос о правильности написания функции и ее вызове (http://www.flasher.ru/forum/showthread.php?t=154432)

SnowQuest 17.04.2011 16:19

Вопрос о правильности написания функции и ее вызове
 
Доброго времени суток!

Не могли бы помочь мне в разрешении думаю базового вопроса в as3.

Развернул простую функцию для перехода по url с аргументами.


Код AS3:

объявляю:
import flash.net.URLRequest;
import flash.net.navigateToURL;
 
функция:
function gotoURL(event:MouseEvent,path:String, wnd:String):void {       
 var URL:URLRequest=new URLRequest(path);
 flash.net.navigateToURL(URL,wnd);
}
 
 
событие(en-кнопка):
en.addEventListener(gotoURL(path:"www.someurl.ru", wnd:"_self"),MouseEvent.CLICK);

Выдает ошибку в событии
1084: Syntax error: expecting rightparen before colon.

Понимаю, что ошибка в написании синтаксиса, знаком с as лишь день, но не могу определить ошибку.

Надеюсь на конструктивную помощь.


С уважением,
Александр

tsarapkabel 17.04.2011 16:57

Намудрил со слушателем.
Код AS3:

public function addEventListener (type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

http://help.adobe.com/ru_RU/AS3LCR/F...Listener%28%29

SnowQuest 17.04.2011 18:01

tsarapkabel, посмотрел ссылку. Как понимаю, слушатель не принимает функцию с аргументами?
Цель вопроса в том, что нужно организовать переход-ссылки по нескольким кнопкам.
Не хотелось писать для каждой кнопки отдельную функцию перехода - громоздко.

Поискал по форуму, те кто задавали вопросы с примерами, фигурировало имя функции и приписан порядковый номер, как понимаю, возможно, писали для каждой кнопки отдельную функцию.

А хотелось бы упростить всю конструкцию.

olexandr 17.04.2011 21:46

Код AS3:

var _hash:Dictionary = new Dictionary();
 
_hash[butEn] = 'en';
butEn.addEventListener(MouseEvent.CLICK, clickHandler);
_hash[butRu] = 'ru';
butRu.addEventListener(MouseEvent.CLICK, clickHandler);
 
function clickHandler(e:MouseEvent):void{
        switch (_hash[e.target]) {
                case 'en':{
                        navigateToURL(new URLRequest('http://en.your.site'), '_self');
                        break;
                }
                case 'ru':{
                        navigateToURL(new URLRequest('http://ru.your.site'), '_self');
                        break;
                }
        }
}

вместо хеша на словаре, можно воспользоватся обычным массивом, а в кейсах проверять индексы в этом массиве. можно, вообще тупо сравнивать e.target с butEn и butRu.
можно еще сразу в словарь добавлять не строку 'en', а объект из вашего примера с ссылкой и окном, тогда обработчике не придется ничего свитчить. но мне предложенный вариант представлятся наиболее верным все же

p.s. при правке сообщения, парсер съедает пробелы :(

Bgg 17.04.2011 21:52

olexandr, есть тег "AS3", не мучайтесь, не на уроке рисования.

FlashWizard 17.04.2011 22:11

Цитата:

olexandr, есть тег "AS3", не мучайтесь, не на уроке рисования.
Он этим тегом скорей всего и воспользовался, просто после редактирования сообщения с тэгами вот такая фигня получается.

olexandr 17.04.2011 23:21

FlashWizard прав

Bgg 17.04.2011 23:39

Цитата:

Сообщение от FlashWizard (Сообщение 990170)
Он этим тегом скорей всего и воспользовался, просто после редактирования сообщения с тэгами вот такая фигня получается.

Да? Хм, ни разу за 3 года не было такого.

FlashWizard 18.04.2011 02:59

Цитата:

Да? Хм, ни разу за 3 года не было такого.
У меня частенько такое случается. Приходится сносить сообщение и писать заново.

wvxvw 18.04.2011 03:06

Однозначно должно быть что-то в [глобальных] настройках форматирования сообщения, типа включенного HTML или чего-то похожего...


Часовой пояс GMT +4, время: 22:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.