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

etc 24.10.2009 13:40

TommyLee, она инициализируется при компиляции. Т. е. это будет просто ссылка на SimpleButton, находящийся на сцене.

amigomos 24.10.2009 13:51

заработала!!!
 
Всем большое спасибо за помощь!!!
автоматический экспорт кнопки в Action Script я отключил и код:

Код AS3:

package 
{
    import flash.events.MouseEvent;
    import flash.display.DisplayObject;
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
 
    public class Proba extends MovieClip
    {
    public function Proba()
        {
            knop.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler);
        }
    public function clickHandler(e:MouseEvent):void
      {
            trace("Привет!");
      }
    }
}

Работает. ВМЕСТЕ МЫ СДВИНЕМ ГОРЫ!!! :-)

TommyLee 24.10.2009 18:33

Цитата:

Сообщение от etc (Сообщение 860228)
она инициализируется при компиляции

То есть, когда объект создаешь в ide - в коде пишется только ссылка; когда объект создаешь программно - соответственно?

etc 24.10.2009 18:44

Цитата:

Сообщение от TommyLee (Сообщение 860311)
То есть, когда объект создаешь в ide - в коде пишется только ссылка; когда объект создаешь программно - соответственно?

Именно. Ссылка имеет такое же имя, как и объект. Обязательно public.

amigomos 24.10.2009 22:21

Подскажите пожалуйста.
Мне надо использовать много кнопок и др. обьектов. я вот решил попробовать задействовать еще одну кнопку(в редакторе у обоих отключена функция "Экспортировать в AS")
вот код:
Код AS3:

package 
{
    import flash.events.MouseEvent;
    import flash.display.DisplayObject;
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
 
    public class Proba extends MovieClip
    {
        //public var knopkr:SimpleButton;
    public function Proba():void
        {
                        // public var knopkr:SimpleButton = new SimpleButton();
                        knop.addEventListener(MouseEvent.CLICK, btnClickHandler);
                        knopkr.addEventListener(MouseEvent.CLICK, btnClickHandler);
                }
                public function btnClickHandler(evt:MouseEvent)
                {
                        trace("нажал кнопку");
 
                }
        }
}

я пытался создать или обьявить вторую кнопку(но выдавались ошибки и я их закоментировал на время). сейчас , с таким кодом выдаеться ошибка
1120: Access of undefined property knopkr.
ошибка на строчке knopkr.addEventListener(MouseEvent.CLICK, btnClickHandler);
Как мне запустить обе кнопки?

ilor 25.10.2009 00:37

У тебя две кнопки имеют одинаковые названия. А с комментариями ты не объявил knopkr

Felicast 25.10.2009 00:56

во-первых: оформите пожалуйста все свои посты в соответствии с правилами (для оформления кода используйте теги [as3]код[/as3]), а то читать невозможно.
во-вторых: для того чтобы кнопки были видны в коде, нужно задать им instance name. затем последовать совету GAIKER:
Цитата:

Надо убрать в настройках AS3 галку "Automatically declare stage instances"
делать так:
Код AS3:

package 
{
        import flash.events.MouseEvent;
        import flash.display.DisplayObject;
        import flash.display.MovieClip;
        import flash.display.SimpleButton;
 
        public class Proba extends MovieClip
        {
                public var knop:SimpleButton;        //не надо это комментировать
                public var knopkr:SimpleButton;        //и это тоже
                public function Proba()
                {
                        //здесь кнопки создавать не надо (ибо создано уже все)
                        knop.addEventListener(MouseEvent.CLICK, btnClickHandler);
                        knopkr.addEventListener(MouseEvent.CLICK, btnClickHandler);
                }
                public function btnClickHandler(e:MouseEvent):void
                {
                        trace("нажал кнопку");
                }
        }
}


etc 25.10.2009 02:39

amigomos, отредактируйте свой пост и оформите код тегами [as3][/as3].

Alex Lexcuk 25.10.2009 10:40

Цитата:

Сообщение от GAIKER (Сообщение 860066)
Надо убрать в настройках AS3 галку "Automatically declare stage instances"

Я, понял, у вас у всех глючные Adobe Flash CS(низнаю), а у меня самая правильная (чет неправильных не встречал, они все у вас)
http://www.murmadillo.tut.su/m/autom...-instances.gif

И вот такой код документ класса
Код AS3:

package {
        import flash.display.*;
        import flash.events.*;
 
        public class Doc extends MovieClip{;
 
                public function Doc(){
                        rBtn.addEventListener(MouseEvent.CLICK, btnClickHandler);
                        pBtn.addEventListener(MouseEvent.CLICK, btnClickHandler);
                }
 
                public function btnClickHandler(evt:MouseEvent) {
                        if (evt.target.name=='rBtn') rmc.revPlay();
                        if (evt.target.name=='pBtn') rmc.play();
                }
 
 
        }
}

Работает, две кнопки, и чего бы ему не работать.
http://www.murmadillo.tut.su/m/rev.rar

Wolsh 25.10.2009 11:07

Алекс, Вы не проводите различий между "правильно, в соответствии с международными конвенциями, удобочитаемо и расширяемо" и "работает, и хрен бы с ним" ? Работает-то в обоих случаях. Речь о том, как стóит делать, а как - нет.


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

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