Wie zu verwenden AS3-Klasse, die in MXML?
Wie würde ich das folgende AS3-Klasse in MXML?
AS3-Klasse:
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-Dokument:
<?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>
Muss ich erklären, meine eigenen Namensraum? Ich gehe davon aus, dass es möglich ist, etwas zu tun:
//Where 'mtm' is my own namespace
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mtm="com.mtm.*"></mx:Application>
Tun, und dann etwas wie das?
<mtm:TestClass></mtm:TestClass>
Ich bin neu in Flex und MXML, aber nicht neu in AS3.
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie haben die richtige Idee. Ihre benutzerdefinierte xmlns ist ein relativer url, der auf die benutzerdefinierten Komponenten-Klassen, so dass, wenn Sie TestClass ist in einem Ordner namens Components, würde man
xmlns:mtm="components.*"
. MXML-Datei die richtige ist.Hier ist der entsprechende LiveDocs-link. Dies ist eine gute Stelle zu finden MXML - /AS3 Informationen:
http://livedocs.adobe.com/flex/3/html/help.html?content=intro_3.html
Es scheint mir, wie Ihre Frage bereits Ihre Antwort.
Ja, müssen Sie deklarieren Ihren eigenen Namensraum genau so, wie Sie getan haben; durch die Angabe auf dem top-level-tag-in deinem Beispiel-Anwendung.
Ja und dann können Sie die Referenz Ihrer Klasse mit, dass der namespace, wie Sie erklärte in Ihrer Probe.
Sind Sie mit einem bestimmten problem? Seit Ihrer benutzerdefinierten Komponente nicht, die UIComponent erweitern; ich vermute, Sie können einige Merkwürdigkeiten; als Ihre Komponente wwont' haben eine Flex-Komponente LifeCycle-Methoden wie die createChildren () -, commitProperties () und updateDisplayList (), die wird wahrscheinlich verwechseln Sie die Flex-manager-Klassen.
UIComponent
.