Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   проблема видимости класса (http://www.flasher.ru/forum/showthread.php?t=135196)

don_Lino 18.01.2010 14:36

проблема видимости класса
 
Начинаю изучать Flex b AS и возникла такая проблемкаmxml не видит класс который находится в as файле.
Создаю проэкт, в проэкте 2 файла: trainingProject.mxml и myClass.as, их содержание выложил ниже
trainingProject.mxml :
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
        <![CDATA[
  import modifyDG;
 
  private function init():void
  {
          var btn:modifyDG = new modifyDG();
  }
        ]]>
</mx:Script>
</mx:Application>

myClass.as :
Код:

package
{
        import mx.core.UIComponent;
       
        public class myClass extends UIComponent
        {
              public function myClass()
            {
              var button:Button = new Button();
              this.addChild(button);
         
              }
        }
}

в результате должна быть отображена кнопка, также если бы я написал:
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
        <![CDATA[
   
  private function init():void
  {
          var button:Button = new Button();
          this.addChild(button);
  }
        ]]>
</mx:Script>
</mx:Application>

делал и по-другому
trainingProject.mxml :
Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:myComp="myComponents.*">

<myComp:myClass />

</mx:Application>

myClass.as :
Код:

package myComponents
{
        import mx.core.UIComponent;
       
        public class myClass extends UIComponent
        {
              public function myClass()
            {
              button.label("i am a button");
              }
        }
}

выдает ошибку:
Severity and Description Path Resource Location Creation Time Id
Could not resolve <myComp:myClass> to a component implementation. trainingProject/src trainingProject.mxml Unknown 1263809815075 1110

Подскажите, что неправильно делаю и какая запиь будет лучше?? :o

Svi_stok 18.01.2010 22:35

не совсем понятно, что вы хотите сделать?

don_Lino 19.01.2010 00:21

Вообще-то цель стоит создать интерфейс динамичесски, при помощи actionscript 3

Fergus 19.01.2010 13:01

Во-первых, расширять УИКомпонент не так просто, как, например, MovieClip. Добавлять детей в него нужно, перекрывая его защищенную функцию. И он сам решит когда их добавлять.
Во-вторых, вот это: var btn:modifyDG = new modifyDG(); не добавляет кнопку в дисплейЛист. Это только создает объект в памяти и ставит на него указатель. Чтоб кнопка добавилась в дисплейЛист, надо тоже сделать addChild().

don_Lino 19.01.2010 15:43

да, в public function myClass() делал addChild(), объект тоже не отображается..=(

BeDLiNt 19.01.2010 15:53

Всё работает. Задайте размеры кнопки, вы её просто не видите (1x1px):
Код AS3:

package
{
        import mx.controls.Button;
        import mx.core.UIComponent;
 
        public class MyClass extends UIComponent
        {
                public function MyClass()
                {
                        var button:Button = new Button();
                        button.width = 100;
                        button.height = 100;
                        this.addChild(button);
                }
        }
}


don_Lino 19.01.2010 17:32

В том то и дело, если это пишу в самом теле mxml, то все работает, а если делаю это через класс в actionscrip, не выходит. Да, и размеры не обязательно задавать, он по умолчанию рисует кнопку минимального размера. Тут дело в классе, или не правильно обращаюсь, или объявляю, но компилятор не указывает об ошибках.

BeDLiNt 19.01.2010 17:51

don_Lino: Ну наследуйтесь не от UIComponent, зачем мучаться. Наследуйтесь там от канваса допустим, если хотите чтоб заработало как вы хотите просто.
Код AS3:

package
{
        import mx.containers.Canvas;
        import mx.controls.Button;
 
        public class MyCanvas extends Canvas
        {
                public function MyCanvas()
                {
                        var button:Button = new Button();
                        this.addChild(button);
                }
        }
}


don_Lino 19.01.2010 18:36

увы, но не проходит фокус.. =( думаю дальше..

BeDLiNt 19.01.2010 18:42

Цитата:

Сообщение от don_Lino (Сообщение 880341)
увы, но не проходит фокус.. =( думаю дальше..

Как не проходит?) Всё работает, сам попробовал.


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

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