Как использовать класс AS3 в MXML? - PullRequest
4 голосов
/ 10 июня 2010

Как бы я использовал следующий класс AS3 в MXML?

AS3 Класс:

package mtm 
{
  import flash.display.MovieClip;
  import flash.display.Shape;

  public class TestClass extends MovieClip
  {

      public function TestClass() 
      {
          var s:Shape = new Shape();
          s.graphics.beginFill(0x000000, 1);
          s.graphics.drawRect(0, 0, 60, 60);
          s.graphics.endFill();
          addChild(s);
      } 
  }
}

Документ MXML:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Panel width="75%" height="75%" paddingTop="10" paddingLeft="10">

    </mx:Panel>
</mx:Application>

Нужно ли мне объявить мое собственное пространство имен? Я предполагаю, что возможно сделать что-то вроде:

//Where 'mtm' is my own namespace
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mtm="com.mtm.*"></mx:Application>

А потом сделать что-то подобное?

<mtm:TestClass></mtm:TestClass>

Я новичок в Flex и MXML, но не новичок в AS3. Спасибо!

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Да, у вас правильная идея.Ваш пользовательский xmlns - это относительный URL-адрес, указывающий на пользовательские классы компонентов, поэтому, если TestClass находится в папке с именем Components, вы должны поместить xmlns:mtm="components.*".Ваш MXML правильный.

Вот соответствующая ссылка LiveDocs.Это хорошее место для поиска информации MXML / AS3: http://livedocs.adobe.com/flex/3/html/help.html?content=intro_3.html

3 голосов
/ 10 июня 2010

Мне кажется, что на ваш вопрос уже есть ваш ответ.

Да, вы должны объявить свое собственное пространство имен точно так, как вы это сделали; указав его в теге верхнего уровня - в вашем примере приложения.

И да, тогда вы можете ссылаться на свой класс, используя это пространство имен, как вы указали в своем примере.

У вас есть особая проблема? Так как ваш пользовательский компонент не расширяет UIComponent; Я подозреваю, что вы можете столкнуться с некоторыми странностями; поскольку ваш компонент wwont 'имеет методы Flex Component LifeCycle, такие как createChildren (), commitProperties () и updateDisplayList (), которые, вероятно, будут путать классы диспетчера Flex.

...