Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-06-2007, 18:55   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 37
Frage bez. Klassenaufbau!?

hi,

habe eine frage bez. klassenvariablen.

zb. eine ImagePlayer klasse:

class ImagePlayer (besteht aus)
-> new TeaserPic (für die full_view)
-> new ArrThumbnail (thumbnails)
-> ....

das problem:
die ImagePlayer klasse ist stark verschachtelt, und besteht aus vielen klassen instanzen. momentan bin ich gezwungen, klassenvariablen von anderen klassen, im "ImagePlayer" zu deklarieren.
(komme auf ca 20+ eigenschaften im ImagePlayer, alle von den anderen klassen)

gibt es da eine andere lösungen, für klassenvariablen, wie zb:
-> eine UIclass ...

*as2 oop neuling*

lg
lu

Geändert von le-loup (13-06-2007 um 18:58 Uhr)
le-loup ist offline   Mit Zitat antworten
Alt 13-06-2007, 19:09   #2 (permalink)
Neuer User
 
Registriert seit: Oct 2004
Beiträge: 37
Nachtrag

hier ein beispiel, von einer Array Klasse:

Code:
*NACHTRAG*

hier eine einfache ArrayKlasse als beispiel:

import site.ThumbNail;
class site.ArrThumbNail {
	private var temp_ThumbNail:ThumbNail;
	private var mc_ThumbNail:ThumbNail;
	private var mc_Holder:MovieClip;
	//
	private var arr_thumb:Array;
	private var arr_type:String;
	private var thumb_row:Number;
	private var arr_x:Number;
	private var arr_y:Number;
	//pic
	private var pic_x:Number;
	private var pic_y:Number;
	private var pic_w:Number;
	private var pic_h:Number;
	private var pic_col:Number;
	//button
	private var btn_pos_x:Number;
	private var btn_pos_y:Number;
	private var btn_x:Number;
	private var btn_y:Number;
	private var btn_w:Number;
	private var btn_h:Number;
	private var btn_col:Number;
	private var btn_act_w:Number;
	private var btn_act_h:Number;
	//label
	private var txt_x:Number;
	private var txt_y:Number;
	private var txt_w:Number;
	private var txt_h:Number;
	private var txt_embed:Boolean;
	private var txt_font:String;
	private var txt_size:Number;
	private var txt_col:Number;
	//
	public function ArrThumbNail(target:MovieClip, arr:Array, type:String, x:Number, y:Number, depth:Number) {
		this.arr_type = type;
		this.arr_thumb = arr;
		this.mc_Holder = target.createEmptyMovieClip("mc_ThumbHolder", depth);
		this.mc_Holder._x = x;
		this.mc_Holder._y = y;
	}
	public function drawArr():Void {
		//
		//
		var inX:Number = 0;
		var inY:Number = 0;
		for (var i = 0; i<this.arr_thumb.length; i++) {
			//--
			this.mc_ThumbNail = new ThumbNail(this.mc_Holder, "detail", i, "zum projekt_"+i, i);
			this.mc_ThumbNail.setPicPath("thumb.jpg");
			this.mc_ThumbNail.setPos(this.arr_x*inX, this.arr_y*inY);
			this.mc_ThumbNail.getPicInstance().setPicStyle(this.pic_x, this.pic_y, this.pic_w, this.pic_h, this.pic_col);
			this.mc_ThumbNail.getButtonInstance().setButtonStyle(this.btn_x, this.btn_y, this.btn_w, this.btn_h, this.btn_col);
			this.mc_ThumbNail.getButtonInstance().setButtonPos(this.btn_pos_x, this.btn_pos_y);
			this.mc_ThumbNail.getButtonInstance().setActiveSize(this.btn_act_w, this.btn_act_h);
			this.mc_ThumbNail.getButtonInstance().setTxtStyle(this.txt_x, this.txt_y, this.txt_w, this.txt_h, this.txt_embed, this.txt_font, this.txt_size, this.txt_col);
			this.mc_ThumbNail.drawThumbNail();
			//--
			switch (this.arr_type) {
			case "multirow" :
				if (inX<this.thumb_row) {
					inX++;
				} else {
					inX = 0;
					inY++;
				}
				break;
			case "horizontal" :
				inX++;
				break;
			case "vertical" :
				inY++;
				break;
			}
		}
	}
	public function setPicBtnStyle(type:String, x:Number, y:Number, w:Number, h:Number, col:Number):Void {
		this[type+"_x"] = x;
		this[type+"_y"] = y;
		this[type+"_w"] = w;
		this[type+"_h"] = h;
		this[type+"_col"] = col;
			}
	public function setButtonPos(x:Number, y:Number):Void {
		this.btn_pos_x = x;
		this.btn_pos_y = y;
	}
	public function setActiveSize(w:Number, h:Number):Void {
		this.btn_act_w = w;
		this.btn_act_h = h;
	}
	public function setTxtStyle(x:Number, y:Number, w:Number, h:Number, embed:Boolean, fontType:String, fontSize:Number, fontCol:Number):Void {
		this.txt_x = x;
		this.txt_y = y;
		this.txt_w = w;
		this.txt_h = h;
		this.txt_embed = embed;
		this.txt_font = fontType;
		this.txt_size = fontSize;
		this.txt_col = fontCol;
	}
	public function setThumbPos(x:Number, y:Number):Void {
		this.arr_x = x;
		this.arr_y = y;
	}
	public function setMultirow(row:Number):Void {
		this.thumb_row = row;
	}
	public function setFilter(arr:Array):Void {
		this.mc_Holder.removeMovieClip();
		this.arr_thumb = arr;
		this.drawArr();
	}
}
das problemn liegt im drawArr!
da ich erst eine "ThumbNail" instance in dieser methode mache, habe ich vorher keine möglichkeit, methoden der Teaser klasse aufzurufen (da keine instance im ArrTeaser konstruktor gemacht wird).

deshalb bin ich gezwungen (w.o beschrieben) variablen derThumbNail Klasse zu definieren und auch die methoden!? taugt mir nicht.

würde mich um einen ansatz freuen, wie man klassenvariablen am besten verwaltet.

lg

ps.: hoffe ich habe es annähernd verständlich erklärt
le-loup ist offline   Mit Zitat antworten
Alt 13-06-2007, 20:00   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Bremen
Beiträge: 13.382
Schreib extra Klassen für den Text, die Thumbnails und Picture etc in eigene Klassen aus und verwalte dort ihre entsprechenden Propertys. Die super-Klasse greift dann via get()- und set()-Methoden auf die Attribute zu, wenn die Werte brauchst oder verändern willst.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele