Flashhilfe.de - Flash Community

Problem mit createEmptyMovieClip und Klasse [Flash 8]

 


AntwortenRegistrieren Seite1  

bronko11#1
Benutzerbild von bronko11
Beiträge: 2
Registriert: Jan 2008

25.01.2008, 20:48

Hallo zusammen,

wollte meine Seiten über Klassen zusammenbauen, doch leider scheitere ich schon jetzt.
Mein Problem ist ich möchte nacheinander, also verschachtelte MovieClips, über den Aufruf von der Funktion "createMyMovieClip" machen, um so meine Seite zu generieren.
Quasi: Bau mir meinen mainContainer -> dann dort rein mein menuContainer usw.

Hier mal mein noch kurzes Script:

ActionScript:
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
29
30
class generate extends MovieClip
{
   private var target:MovieClip;
    private var mc:MovieClip;
   
   public function createMyMovieClip(target:MovieClip, mc_name:String, width:Number, height:Number, xPos:Number, yPos:Number, color:Number)
   {
      mc = target.createEmptyMovieClip( mc_name, target.getNextHighestDepth() );
      mc.beginFill(color);
      mc.lineTo(0, height);
      mc.lineTo(width, height);
      mc.lineTo(width, 0);
      mc.lineTo(0, 0);
      
      mc._x = xPos;
      mc._y = yPos;
   }
   
   public function posMyMovieClip(xPos:Number, yPos:Number)
   {
      mc._x = xPos;
      mc._y = yPos;
   }
   
   public function createMask(mcMask:MovieClip, mcMasked:MovieClip)
   {
      mcMasked.setMask(mcMask);
   }
   
}


Und hier der Aufruf:

ActionScript:
1
2
3
4
5
6
7
//main movie Container
var movie:generate = new generate(this);
movie.createMyMovieClip(this, "movie", 958, 540, 100, 100, 0xdddddd);

//menu Container
var menu:generate = new generate(movie);
menu.createMyMovieClip(movie, "menu", 958, 35, 0, 0, 0x000000);


Was mache ich falsch?

Und noch ne Frage.
Die MovieClips werden im Flash-Output in Bild 0 erzeugt.
Sind diese dann in der Zeitleiste nicht ansprechbar, wie z.B. movie._x = 100;
Kann ich diese in die Zeitleiste integrieren?

Über Hilfe bin ich dankbar. Grüße.

Werbung
Beiträge: 0
Registriert: Feb 2016


burnZ#2
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

26.01.2008, 02:32

Ich verstehe den Aufbau deiner Klasse nicht ganz und den Gedanken dahinter.
Vorallem übergibst du dem Konstrukt Clips (im ersten this, im zweiten movie) obwohl garkein Constructor in der Klasse definiert ist. Somit bleibt target vermutlich doch immer undefined?

Nebenbei: Klassen schreib man uppercase first (Generate)...woher du diesen Namen für eine solche Klasse genommen hast ist mir auch schleierhaft :P

Die Methode createMask scheint mir auch ziemlich überflüssig zu sein.

movie._x = 100; du verschiebst da zwar was, aber movie wird nirgendwo auf die bühne gebracht, erreichen könntest du das wenn du die klasse mit einem MC im Library verknüpfst und dann die instanzen von generate via attachMovie erzeugst. allerdings sind dann auch keine Konstruktoren mit Werten möglich, aber da da ja ohnehin keiner ist wo einer sein sollte ... :P

du könntest aber auch delegaten schreiben, sodass _x auf mc._x angewendet wird:

ActionScript:
1
2
3
4
5
6
7
8
9
public function set _x( value:Number ):Void
{
    mc._x = value;
}

public function get _x():Number
{
  return mc._x;
}
Geändert von burnZ am 26.01.08 um 02:36 Uhr
bronko11#3
Benutzerbild von bronko11
Beiträge: 2
Registriert: Jan 2008

Themenautor/in

26.01.2008, 09:25

Hallo nochmal,

wie stelle ich das mit dem Konstrukter an? Hat mir da jemand eventuell ein kleines Beispiel?

Vielen Dank.

omega psi#4
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

26.01.2008, 10:36

ActionScript:
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
29
30
31
32
33
/**
* Created with BeanButler © 2007, Omega Psi
*/

class Generator {

   private var _mask:MovieClip;
   private var _target:MovieClip;

   public function Generator(target:MovieClip) {
      this._target = target;
   }

   public function get mask():MovieClip { return this._mask; }

   public function get target():MovieClip { return this._target; }

   public function set mask(mask:MovieClip):Void {
      if (this._target == null) {
         throw new Error("Property is undefined");
      }
      this._mask = mask;
      this._target.setMask(this._mask);
   }

   public function set target(target:MovieClip):Void { this._target = target; }

   public function toString():String {
      var asString:String = "Generator";
      asString += "\n\t- mask: "+this._mask.toString();
      asString += "\n\t- target: "+this._target.toString();
      return asString;
   }
}
oder
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* Created with BeanButler © 2007, Omega Psi
*/

class Generator extends MovieClip {

   private var _content:MovieClip;

   public function Generator() {
   }

   public function get content():MovieClip { return this._content; }

   public function set content(content:MovieClip):Void { this._content = content; }

   public function toString():String {
      var asString:String = "Generator";
      asString += "\n\t- content: "+this.content.toString();
      return asString;
   }
}
Im zweiten Beispiel kannst du mask getrost weglassen, da du von MovieClip erbst. Die Maske kannst du dann über die Superclass-Methode setMask setzen.

Architectures - Refactoring - Prototyping - Coding - Training
Werbung
Beiträge: 0
Registriert: Feb 2016



AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2019 Sebastian Wichmann - Flashhilfe.de