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

amigomos 22.10.2009 23:13

не могу запустить скрипт кнопки!
 
Здравствуйте. Я начал изучать flash и вот пробую испытать кнопку SimpleButton. Я ее нарисовал в свойствах ее указал как "кнопка",назвал ее knop и поставил галочку на "экспорт в 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() {
                        var knop:SimpleButton = new SimpleButton();
                        addEventListener(MouseEvent.MOUSE_DOWN, dis);       
                                }
        }
    public function dis(e:MouseEvent):void {
                trace("Привет!");
        }
}

но почему то на первой строчке кода( " package { ") все время выскакивает ошибка
1046: Type was not found or was not a compile-time constant: knop.

подскажите пожалуйста, что я делаю неправильно ,как избавиться от ошибки.

Felicast 23.10.2009 11:58

Код 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 function Proba()
                {
                        knop.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler);
                }
                public function clickHandler(e:MouseEvent):void
                {
                        trace("Привет!");
                }
        }
}

обратите внимание на все отличия моего кода от вашего и примите к сведению (и не забудьте переименовать название файла с большой буквы (Proba))

amigomos 23.10.2009 15:09

Большое спасибо за подсказку. Учту ваши рекомендации. Вставил,ваш, исправленный код и теперь выскакивает ошибка
1151: A conflict exists with definition knop in namespace internal.
(10 строчка где обьявляеться кнопка "public var knop:SimpleButton;" )

СлаваRa 23.10.2009 15:32

Код AS3:

public var knop:SimpleButton;

надо заменить на
Код AS3:

public var knop:SimpleButton = new SimpleButton();


Gaen 23.10.2009 16:03

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

Felicast 23.10.2009 17:41

2СлаваRa - не правильно.
правильный путь подсказал GAIKER.
еще возможно просто удалить эту строчку. но лучше сделать как сказал GAIKER

Alex Lexcuk 23.10.2009 20:41

Цитата:

Сообщение от amigomos (Сообщение 860048)
Большое спасибо за подсказку. Учту ваши рекомендации. Вставил,ваш, исправленный код и теперь выскакивает ошибка
1151: A conflict exists with definition knop in namespace internal.
(10 строчка где обьявляеться кнопка "public var knop:SimpleButton;" )

Вы указали нарисованной кнопке инстанс имя knop и вы же ее создаете public var knop, естественно будет конфликт, ее создавать не надо, ее надо уже использовать.
Код 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 function Proba()
                {
                        knop.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler);
                }
                public function clickHandler(e:MouseEvent):void
                {
                        trace("Привет!");
                }
        }
}

по поводу отключения автоматического декларирования, я так не делаю, ибо считаю, что в этом нет никакого смысла.
Есть примеры с кнопками
http://www.murmadillo.tut.su/html/XML_MENU.rar
http://www.murmadillo.tut.su/m/rev.rar
http://www.murmadillo.tut.su/html/me...tton-href.html

Felicast 23.10.2009 22:54

Alex Lexcuk, вы бы сначала мой коммент прочитали, обдумали, а затем бы отвечали.
конечно такой путь возможен, но все-таки правильнее будет
Цитата:

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

etc 24.10.2009 00:37

Alex Lexcuk, надо создавать и отключать автоматическое создание.

TommyLee 24.10.2009 11:51

Почему
Код AS3:

public var knop:SimpleButton;

а не
Код AS3:

public var knop:SimpleButton=new SimpleButton();

?
Без инициализации это же пустая переменная, методов вызвать нельзя и прочее.


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

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