Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как добраться до конструктора класса нового MovieClip (http://www.flasher.ru/forum/showthread.php?t=119269)

petav 16.12.2008 17:10

Как добраться до конструктора класса нового MovieClip
 
Здравствуйте!

Нарисовал MovieClip "Test" и добавил его в библиотеку
Задал свойства MovieClip такие как: Export for ActionScript;
Дал имя классу по имени MovieClip - Test
Теперь могу из ActionScript создавать экземпляры MovieClip "Test"
Код AS3:

var obj = new Test();

Вопрос, созданный класс Test как бы пустой, он не имеет конструктора и методов, а я хотел бы их добавлять. Пробывал создавать в ActionScript class с созвучным именем Test, но при этом компилятор "крошиться". Ошибки вылазеют. Помогите советом. ActionScript3

mre 16.12.2008 17:24

А какие ошибки?

petav 16.12.2008 17:31

1061: Call to a possibly undefined method addEventListener through a reference with static type drag.as$9:test.

И все в этом духе, но это ошибки вверху по коду которые исчезнут после того как я к примеру класс test d test2 переименую

mre 16.12.2008 17:33

Здесь нет телепатов.
Кто знает что Вы там написали.
Показывайте код.

petav 16.12.2008 17:38

Код AS3:

package {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.events.Event;
        import flash.net.NetConnection;
        import flash.net.NetStream;
        import flash.events.SecurityErrorEvent;
        import flash.events.NetStatusEvent;
        import flash.events.ActivityEvent;
 
        public class drag extends MovieClip        {
                var connection:NetConnection;
 
                public function drag ()        {
                        trace('Ok');
                        circle_mc.addEventListener(MouseEvent.MOUSE_UP, onMOUSE_UP);
                        circle_mc.addEventListener(MouseEvent.MOUSE_DOWN, onMOUSE_DOWN);
                        addButton.addEventListener(MouseEvent.CLICK, onMOUSE_CLICK);
 
                        connection = new NetConnection();
                        connection.addEventListener(NetStatusEvent.NET_STATUS, onNET_STATUS);
                        connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSECURITY_ERROR);
                        connection.connect('rtmp://telecon.petav/room');
                }
 
                private function onMOUSE_DOWN(event:Event):void {
                        trace('MOUSE_DOWN');
                        event.target.startDrag(true);
                }
 
                private function onMOUSE_UP(event:Event):void {
                        trace('onMOUSE_UP');
                        event.target.stopDrag();
                }
 
                private function onMOUSE_CLICK(event:Event):void {
                        trace('12');
                        //Новый объект MovieClip
                        var r = new test();
                        r.x = 120;
                        r.y = 150;
                        addChild(r);
                }
 
                function onNET_STATUS(event:NetStatusEvent):void {
                        switch (event.info.code) {
                                case "NetConnection.Connect.Success":                                       
                                        var stream:NetStream = new NetStream(connection);
                                        stream.addEventListener(NetStatusEvent.NET_STATUS, onNET_STATUS);
                                        stream.client = this;
                                        circle_mc.video1.attachNetStream(stream);
                                        stream.play('123');                       
                                        break;
                                case "NetStream.Play.StreamNotFound":
                                        trace("Stream not found");
                                        break;
                        }
                }
 
                function onSECURITY_ERROR(event:SecurityErrorEvent):void {
                        trace("onSECURITY_ERROR: " + event);
                }
 
                public function onBWDone():void        {}
        }       
}
 
class test {
        public function test(){
                trace('Я работаю');
        }
}

Добавлено через 4 минуты
здесь код переешан, я только заметил надо было лишнее вырезать.

Добавлено через 6 минут
Код AS3:

class test {
        public function test(){
                trace('Я работаю');
        }
}

я так понимаю вот здесь ошибка, в этом коде. Потому как меняю тест на тест2 все работать начинает. Как добавиться что-то в конструктор test созданного из movieclip хз.

etc 16.12.2008 18:38

А зачем вы создаете вложенный класс внутри drag? И кто вас так научил называть классы?

petav 16.12.2008 21:23

Я не создаю класс внутри класса, это раз. Посмотрите внимательней второй класс находиться за пределами пакета, что разрешаеться AS3.

И какая разница как я назвал класс, изначально я тестировал перетаскивание объекта потом другое. Этот код создан не для конечного пользователя, а для отработки тех или иных действий во Flash

И, в третьих не тратье свое и моё время. Если есть что сказать конкретно по поставленному мной вопросу, очень прошу это сделать.

Добавлено через 5 минут


Вот ответ на вопрос который я задал на форуме http://xpoint.ru/forums/internet/fla...ad/43590.xhtml

Цитата:
1) Поскольку у вас AS3 всё очень просто.
2) Создаёте MovieClip, в свойствах его указываете имя класса, например "apetrov.MyFirstClass".
3)Рядом с fla-файлом (или по другому пути, указанному в "Source Path") создайте папку "apetrov"
4) В этой папке создайте файл с именем "MyFirstClass.as" примерно с таким содержанием:
Код AS3:

package apetrov
{
  import flash.display.MovieClip;
 
  public class MyFirstClass extends MovieClip
  {
 
      function MyFirstClass()
      {
        trace('Is constructor')
      }
 
      public function myFirstMethod():void
      {
        trace('My method')
      }
 
  }
}


etc 16.12.2008 23:36

Цитата:

Сообщение от petav (Сообщение 784257)
Я не создаю класс внутри класса, это раз. Посмотрите внимательней второй класс находиться за пределами пакета, что разрешаеться AS3.

Я понимаю. Вопрос был такой: зачем вы это делаете? Классы за пределами пакета в *.as-файле не подхватываются флешем.

Цитата:

Сообщение от petav (Сообщение 784257)
И какая разница как я назвал класс, изначально я тестировал перетаскивание объекта потом другое. Этот код создан не для конечного пользователя, а для отработки тех или иных действий во Flash

Дело в том, что ни один пример из хелпа или класс флешового фреймворка не научит называть классы со строчной буквы.

Цитата:

Сообщение от petav (Сообщение 784257)
И, в третьих не тратье свое и моё время. Если есть что сказать конкретно по поставленному мной вопросу, очень прошу это сделать.

А я вас очень прошу оформить код соответствующими тегами, пару раз вы это сделать не поленились, однако в последний раз почему-то забыли. У нас тут с этим строго, не заставляйте меня тратить своё время на плюсы.

Цитата:

Сообщение от petav (Сообщение 784257)
Вот ответ на мой вопрос
1)задал конкретный вопрос
2)получил конкретный ответ

Безусловно, потому что вас не спросили про ошибки, которые выдает компилятор, что, кстати, было резонным вопросом для выявления пути решения, потому как по вашему описанию всё прекрасно. А т. к. ошибки явно свидетельствовали о том, что что-то не так конкретно в вашем коде, вас и попросили привести код, в котором и был обнаружен internal-класс, о целесообразности создания которого я вас и спросил.
Но раз вас подобные вопросы не устраивают и они «тратят» ваше время, то извините.

з. Ы. А код лучше оформить. Чем раньше, тем лучше.

petav 17.12.2008 11:12

Цитата:

Классы за пределами пакета в *.as-файле не подхватываются флешем.
Очень даже поддерживаются в ActionScript3
Цитата:

Дело в том, что ни один пример из хелпа или класс флешового фреймворка не научит называть классы со строчной буквы.
Это что важно

etc 17.12.2008 13:01

Цитата:

Сообщение от petav (Сообщение 784348)
Очень даже поддерживаются в ActionScript3

Тогда так напишу: не подхватываются в Flash IDE для присвоения кастомного класса клипу. Так понятнее?

Цитата:

Сообщение от petav (Сообщение 784348)
Это что важно

Это важно, либо вы играете по правилам языка, на котором пишете, либо просто турист. Да и, судя по отсутствию знака вопроса, да, это что важно.


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

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