Hej allesammen
Har tit siddet og tænkt på hvordan i andre gør når i har en klasse der subklasser Sprite, min normale måde er jeg har en metode der returnere mit displayobjekt så jeg kan bruge addChild metoden.
Jeg ville høre om i har andre måde?.
Interface
1 2 3 4 5 6 7 8 9 10 11 12 | package core { import flash.display.DisplayObject; import flash.display.Sprite; public interface IBall { function get displayObject():DisplayObject; function drawBall():Sprite; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package core { import flash.display.DisplayObject; import flash.display.Sprite; public class Ball extends Sprite implements IBall { public function Ball() { //no need for constructor. } public function get displayObject():DisplayObject { return this; } public function drawBall():Sprite { var ob:Sprite = new Sprite(); ob.graphics.beginFill(0x000000,1); ob.graphics.drawCircle(100,100,20); ob.graphics.endFill() return ob; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package { import core.Ball; import core.IBall; import flash.display.Sprite; public class Interfaceeksample extends Sprite { public function Interfaceeksample() { var blackball:IBall = new Ball(); blackball.drawBall(); addChild(blackball.displayObject); } } } |
6 kommentarer
Hvis du har en klasse der extender sprite, så kan du adde den direkte, da sprite nedarve displayobject
Har du prøvet at skrive :
Droppe get displayobject og skrive :
i din main class
Du vil ikke kunne adde et interface til display listen. Selvom det objekt du laver er en nedarver af DisplayObject.
Jeg ville typecaste objektet til et DisplayObject/Ball, når jeg addede objektet til Display listen:
Jeg plejer at goere noget i stil med:
Når du siger:
addChild(Ball(ball));
Så ryger hele pointen med at bruge et Interface jo, da du angiver en specifik klasse. Du vil altid skulle bruge DisplayObject/Sprite/MovieClip i den sammenhæng.
Det var en fejl. Ville have skrevet "addChild(Sprite(ball));"
ah selvfølgelig type cast den , tænke ikke lige på den.
Med venlig hilsen, best regards
Rene´