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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-07-2002, 10:56   #1 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
MX: petmarket architektur

ich habe gestern einen interessanten artikel
bei mm gefunden, der von der architektur der
petmarket applikation handelt.

es ist zwar etwas schwierig, zwischen dem
ganzen marketing geblubber die handfesten
infos zu finden, aber gegen ende wirds
interessant.

stichwort mvc.

http://www.macromedia.com/desdev/mx/...petmarket.html

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 06-07-2002, 05:28   #2 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Sicher sehr sinnvoll für alle die es besser nachvollziehen wollen

mfg
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 06-07-2002, 06:07   #3 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
guten morgen faule bande

nachdem mein eintrag gestern den ganzen tag allein
rumstand, habe ich mich heute morgen daran gesetzt,
und mal ein einfaches fotoalbum als mvc programmiert.

das macht die ganze geschichte vielleicht ein wenig
handfester .

ich leih mir mal gerade zwei worte bei matze und
wuerde sagen: be inspired


ActionScript:
  1. //zur demonstration der model view controller (mvc) architektur
  2. //bauen wir ein einfaches fotoalbum in dem man vorwaerts und
  3. //rueckwaerts navigieren kann und sich jeweils das bild und
  4. //ein kurzer text entsprechend anpassen.
  5. //
  6. //wg. mvc siehe auch
  7. //www.macromedia.com/desdev/mx/blueprint/articles/makingpetmarket/makingpetmarket.html
  8. //
  9. //(c) 07/2002 ralf bokelberg helpQLODhelp.de
  10.  
  11. //
  12. //-------------------------------------
  13. //
  14. function Model(data){
  15.     //das model verwaltet die daten
  16.     //fuer das photoalbum benutzen wir einen ringpuffer
  17.     //d.h. man kann innerhalb der liste vorwaerts und rueckwaerts
  18.     //navigieren und wenn ein ende erreicht ist, wird am anderen
  19.     //ende weitergemacht.
  20.     if(data) this.init(data);
  21. }
  22.  
  23. Model.prototype.init = function(data){
  24.     //daten initialisieren
  25.     this.data = data;   
  26.     this.actDataIdx = 0;
  27. }
  28.  
  29. Model.prototype.getActData = function(){
  30.     //akt. datensatz liefern
  31.     trace("getActData " + this.actDataIdx);
  32.     return this.data[this.actDataIdx]
  33. }
  34.  
  35. Model.prototype.nextData = function(){
  36.     //naechsten datensatz zum aktuellen machen
  37.     if( ++this.actDataIdx >= this.data.length) this.actDataIdx = 0;
  38. }
  39.  
  40. Model.prototype.prevData = function(){
  41.     //vorhergehenden datensatz zum aktuellen machen
  42.     if( --this.actDataIdx < 0) this.actDataIdx = this.data.length-1;
  43. }
  44.  
  45. //
  46. //-------------------------------------
  47. //
  48. function View(controller){
  49.     //der view realisiert die benutzeroberflaeche zum anzeigen der daten
  50.     var depth = 1;
  51.  
  52.     //holder fuer den view
  53.     this.mc = _root.createEmptyMovieclip("view", depth++);
  54.    
  55.     //text ueber dem bild
  56.     this.mc.createTextfield("text", depth++, 50, 10, 200, 20);
  57.  
  58.     //handler fuer onUpdateEvent   
  59.     this.mc.text.onUpdate = function(actData){
  60.         trace("onUpdate " + this._name);
  61.         this.text = actData.text;
  62.         var tf = new TextFormat();
  63.         tf.align = "center";
  64.         this.setTextFormat(tf);
  65.     }
  66.    
  67.     //handler anmelden
  68.     controller.addListener(this.mc.text);
  69.    
  70.     //mc fuer das bild
  71.     var mcNew = this.createPoly("pic", depth++, 50,50, 0xeeeeee, 0,0, 0,200, 200,200, 200,0);
  72.  
  73.     //handler fuer onUpdateEvent   
  74.     mcNew.onUpdate = function(actData){
  75.         trace("onUpdate " + this._name + " " + actData.picurl);  
  76.         this.holder = this.createEmptyMovieclip("holder", 1);
  77.         this.holder.loadMovie(actData.picurl);
  78.     }
  79.    
  80.     //handler anmelden
  81.     controller.addListener(mcNew);
  82.    
  83.     //button nach links
  84.     mcNew = this.createPoly("links", depth++, 0,0, 0xff0000, 0,20, 40,40, 40,0);
  85.  
  86.     //aktion wenn "links" gedrueckt wird
  87.     mcNew.onRelease = function(){
  88.         trace("onRelease " + this._name);
  89.         controller.prevPic();
  90.     }
  91.    
  92.     //button nach rechts
  93.     mcNew = this.createPoly("rechts", depth++, 260, 0, 0xff0000, 0,0, 40,20, 0,40);
  94.  
  95.     //aktion wenn "rechts" gedrueckt wird
  96.     mcNew.onRelease = function(){
  97.         trace("onRelease " + this._name + " " + this._parent.controller);      
  98.         controller.nextPic();
  99.     }
  100.    
  101.     //hole den ersten datensatz
  102.     controller.getPic();
  103. }
  104.  
  105. View.prototype.createPoly = function(name, depth, x, y, col, xStart, yStart){
  106.     trace("createPoly " + name);
  107.     var mcNew = this.mc.createEmptyMovieclip(name, depth);
  108.     with(mcNew){
  109.         beginFill(col);
  110.         moveTo(xStart, yStart);
  111.         for(i=7; i<arguments.length; i+=2){
  112.             lineTo(arguments[i], arguments[i+1]);
  113.         }
  114.         endFill();
  115.         _x = x;
  116.         _y = y;
  117.     }
  118.     return mcNew;
  119. }
  120.  
  121. //
  122. //-------------------------------------
  123. //
  124. function Controller(model){
  125.     //der controller verbindet die daten mit der benutzeroberflaeche
  126.     ASBroadcaster.initialize(this);
  127.     this.model = model;
  128. }
  129.  
  130. Controller.prototype.getPic = function(){
  131.     //akt. bild vom model holen und view
  132.     //informieren, dass es neue daten gibt
  133.     var actData = this.model.getActData();
  134.     this.broadcastMessage("onUpdate", actData);
  135. }
  136.  
  137. Controller.prototype.nextPic = function(){
  138.     //das naechste bild anzeigen
  139.     trace("nextPic");
  140.     this.model.nextData();
  141.     this.getPic();
  142. }
  143.  
  144. Controller.prototype.prevPic = function(){
  145.     //das vorherige bild anzeigen
  146.     trace("prevPic");
  147.     this.model.prevData();
  148.     this.getPic();
  149. }
  150.  
  151. //
  152. //-------------------------------------
  153. //
  154. //hier werden unsere drei objekte initialisiert
  155. myModel = new Model([{picurl: "test1.jpg", text: "ein bild von mir"},
  156.                      {picurl: "test2.jpg", text: "morgens im fruehtau"},
  157.                      {picurl: "test3.jpg", text: "selbst ist die frau"},
  158.                      {picurl: "test4.jpg", text: "hand ab"},
  159.                      {picurl: "test5.jpg", text: "mein neues fahrrad"}]);
  160.  
  161. myController = new Controller(myModel);
  162.  
  163. myView = new View(myController);
  164.  
  165. //das war es auch schon, gar nicht schwer
  166. //(c) 07/2002 ralf bokelberg helpQLODhelp.de
  167.  

mfg r.

Geändert von bokel (06-07-2002 um 07:49 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 06-07-2002, 11:50   #4 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
Thumbs up

hey bokel, das ist ja superklasse!

direkt mal ausprobiert - 1a!

das muß ich mir nochmal genauer anschauen.

dassoud
__________________

33rpm
dassoud ist offline   Mit Zitat antworten
Alt 06-07-2002, 16:32   #5 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
Thumbs up

hehe bokel - fauleband

Schönes Beispiel !

mfg
Matze K.
Madokan ist offline   Mit Zitat antworten
Alt 06-07-2002, 17:35   #6 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
merci vielmals

ein wesentlicher vorteil dieser methode ist,
dass man datenstrukturen und anzeige voellig
von einander getrennt hat.

das erleichtert die teamarbeit ungemein, wenn
z.B. einer fuer das frontend und jemand anderes
fuer das backend verantwortlich ist.

aber auch fuer einzelkaempfer ist es interessant,
weil aenderungen des einen teils nicht immer auch
automatisch aenderungen und erneute tests im anderen teil bedeuten.

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 07-07-2002, 01:34   #7 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
SUPER HAMMER FETT!!! Bin immer noch sprachlos !
Abartig !!!

ein begeisterter Fan
nky ist offline   Mit Zitat antworten
Alt 08-07-2002, 11:08   #8 (permalink)
Flashtheoretiker
 
Benutzerbild von Niels
 
Registriert seit: Jun 2001
Ort: earth.brd.freiburg
Beiträge: 597
Thumbs up Daumen hoch (:

Der fleißige bokel-Bandit

Beide Daumen hoch, auch wenn ich es noch nicht ganz verstanden habe. Also nicht dein Script, das ist schee, sondern das Prinzip der Architektur

Ich werde mir dann mal den Artikel durchlesen, wenn das Projekt hier vom Tisch ist. *seufzt*

Thx für die Info Ralf.
Gruss aus Freiburg.
nl
__________________

mfG
Niels

"Die einzige Möglichkeit Menschen zu motivieren ist auf Verständnis und Verständigung ausgerichtete Kommunikation."

"Eine gute Theorie ist das Praktischste, was es gibt."
Gustav Robert Kirchhoff (1827-87), dt. Physiker


Suchen und Finden:
Flashforum | search&find
Flashforum | tutorials


proto resources, no forum:
Flashpower | prototyped

Niels ist offline   Mit Zitat antworten
Alt 08-07-2002, 18:58   #9 (permalink)
Thorsten Manser (flash4all.de)
 
Benutzerbild von Thorsten [Flash4all]
 
Registriert seit: Jun 2001
Ort: Heilbronn-Heidelberg
Beiträge: 4.462
@bokel und alle anderen

könnte man nicht unter jedes beispiel einen Link machen (schon oft hier gesehen)

sehen
saugen

wäre nett

Kann mir nämlich vorstellen, dass sich nicht jeder gleich was drunter vorstellen kann, wenn er den code sieht.


für die anderen auch.. (hat sich ja fast schon eingebürgert), bitte ein beispiel linken, wo man sich das gegebenfalls anschauen könnte.




Gruss
Thorsten

p.s. die meisten machen es ja schon
__________________
webDesign 4 a new generation:
[ derBauerB:Traxx - Special Audio Effects CD by derBauer - Out now!Flash4All ]
Thorsten [Flash4all] ist offline   Mit Zitat antworten
Alt 08-07-2002, 19:25   #10 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
hey croc,

die links funktionieren ja gar nicht

mfg r.


















bokel ist offline   Mit Zitat antworten
Alt 08-07-2002, 19:28   #11 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
soll ich mal ein beispiel hochladen, bokel?

müßte nur ein paar bilder hochladen.

dassoud
__________________

33rpm
dassoud ist offline   Mit Zitat antworten
Alt 08-07-2002, 19:31   #12 (permalink)
Thorsten Manser (flash4all.de)
 
Benutzerbild von Thorsten [Flash4all]
 
Registriert seit: Jun 2001
Ort: Heilbronn-Heidelberg
Beiträge: 4.462
bokel


das sind ja auch keine links..sondern unterstrichener text *g*


sorry war ja nur als beispiel gedacht..

schau es dir bei den anderen an..

die haben den code,

dann

link zum beispiel swf
und link zum download dieser beispiel fla (zip)

wäre doch echt besser? weil wie gesagt.,... nicht jeder kann sich was drunter vorstellen, wenn er7sie den code sieht....


Thorsten


P.s. upsss hab deinen irony smiley erst gerade gesehen [edit]
__________________
webDesign 4 a new generation:
[ derBauerB:Traxx - Special Audio Effects CD by derBauer - Out now!Flash4All ]
Thorsten [Flash4all] ist offline   Mit Zitat antworten
Alt 08-07-2002, 19:40   #13 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
gerne dassoud,

mfg r.
bokel ist offline   Mit Zitat antworten
Alt 08-07-2002, 19:46   #14 (permalink)
ontheoutsidelookingin
 
Benutzerbild von dassoud
 
Registriert seit: Jun 2001
Ort: Dortmund
Beiträge: 5.897
oki, weil das ding so klasse ist, konnte ich gar nicht anders:

>>anschauen

>> download

dassoud
__________________

33rpm
dassoud ist offline   Mit Zitat antworten
Alt 08-07-2002, 19:51   #15 (permalink)
Flashtheoretiker
 
Benutzerbild von Niels
 
Registriert seit: Jun 2001
Ort: earth.brd.freiburg
Beiträge: 597
Thumbs up

doppeldaumendrück !
__________________

mfG
Niels

"Die einzige Möglichkeit Menschen zu motivieren ist auf Verständnis und Verständigung ausgerichtete Kommunikation."

"Eine gute Theorie ist das Praktischste, was es gibt."
Gustav Robert Kirchhoff (1827-87), dt. Physiker


Suchen und Finden:
Flashforum | search&find
Flashforum | tutorials


proto resources, no forum:
Flashpower | prototyped

Niels 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 15:36 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele