Форум 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=148316)

NikolyA 27.12.2010 21:15

автоматическое нажатие кнопки
 
у меня есть функция, которая отображает кнопку на экране, а кнопка затем при нажатии вызывает другую функцию, я бы хотел чтоб после того как я вызову первую функцию отображения кнопки на экране, кнопка с имитировала нажатие и выполнила то что я задал в функции, как лучше сделать имитацию нажатия и вызов действия?
Спасибо

TanaTiX 27.12.2010 21:26

Есть кнопка, есть ее обработчик. Вешайте одно на другое и программируйте как вам удобно.
Если нужно сделать возможность вызова обработчика без обработки, то пишите что-то типа
Код AS3:

private function handler(e:MouseEvent=null):void{...

Или я не понял вопрос

NikolyA 28.12.2010 06:28

Немного поясню, есть функции:

Код AS3:

                protected function saveToFileDelayForDraw(duration:Number):void {        
                        saveToFileDelayForDrawTimer = new Timer(duration, 1);
                        saveToFileDelayForDrawTimer.addEventListener("timer", saveCurrentViewToFile, false, 0, true);
                        saveToFileDelayForDrawTimer.start();                               
                }
 
                protected function saveCurrentViewToFile(event:Event):void {                           
                            if(saveToFileDelayForDrawTimer.running) {
                                saveToFileDelayForDrawTimer.removeEventListener("timer", saveCurrentViewToFile);
                                saveToFileDelayForDrawTimer.stop();
                        }
                saveBtn.visible = true;
                saveBtn.addEventListener(MouseEvent.CLICK, saveImages);
                saveBtn.buttonMode = true;
 
                }       
 
 
                public function saveImages(event:MouseEvent):void
                {
                        var temp:BitmapData = new BitmapData(viewer.width, viewer.height);
                        temp.draw(viewer);
                        var image = new Bitmap(temp);
                        var jpgimage:JPGEncoder = new JPGEncoder(100);
                        var ba:ByteArray = jpgimage.encode(temp);
                        var save:FileReference = new FileReference();
                        save.save(ba, "image" + ".jpg");
                }

т.е. получается что по таймеру запускаем функцию saveCurrentViewToFile, эта функция показывает мне на экране saveBtn - которая по нажатию выполняет функцию saveImages. А мне бы хотелось чтоб кнопка появлялась и без моего участия, автоматически выполняла требуемое действие.
Где мне в моих функциях подправить
Спасибо

iflamberg 28.12.2010 11:09

Код AS3:

 
                protected function saveCurrentViewToFile(event:Event):void {                           
                            if(saveToFileDelayForDrawTimer.running) {
                                saveToFileDelayForDrawTimer.removeEventListener("timer", saveCurrentViewToFile);
                                saveToFileDelayForDrawTimer.stop();
                        }
                saveBtn.visible = true;
                saveBtn.addEventListener(MouseEvent.CLICK, saveImages);
                saveBtn.buttonMode = true;
                      saveImages(null);
                }

так что ли хотите?

Hidest 28.12.2010 14:06

Насколько помню, вот это

Код AS3:

        save.save(ba, "image" + ".jpg");

отработает только в ответ на действие пользователя, т.е. просто из кода это не вызвать... Безопасность-с...

UPD: Правильно помню, ниже цитата из хелпа:

Цитата:

Этот метод можно вызывать только в ответ на пользовательское событие (например, в обработчике событий щелчка мыши или нажатия клавиши). В противном случае в результате вызова этого метода в приложении Flash Player возникает ошибка.

mikhailk 28.12.2010 14:49

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

Вообще, иногда достаточно просто пересмотреть алгоритм. Не имитировать нажатие кнопки с последующей отправкой файла, а отправить файл и показать нажатие кнопки.

NikolyA 28.12.2010 22:47

всем большое спасибо, найдем другой путь


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

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