Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-04-2004, 09:56   #1 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
[STUFF] ZZOOOooommm

angeregt durch den threat untern drunter 'pendant zum prototype' habe ich hier eine kleine zoom-klasse gebastelt.

dabei galt als vorlage die alten 'mc-prototype-methoden' aus oben genannten threat.
nunja - allzu viel ist davon nimmer übrig, außer halt dem mathekrempel.

hier mal die klasse zoomClass.as :

ActionScript:
  1. class zoomClass extends MovieClip{
  2.     public var targetX:Number;
  3.     public var targetY:Number;
  4.     public var targetXs:Number;
  5.     public var targetYs:Number;
  6.     public var difX:Number;
  7.     public var difY:Number;
  8.     public var difXs:Number;
  9.     public var difYs:Number;
  10.    
  11.     public var target:Number;
  12.     public var delay:Number;
  13.    
  14.     public var maxim:Number;
  15.     public var defaultMax:Number = 500;
  16.    
  17.     public var pressed:String;
  18.  
  19.     static var isX:Number;
  20.     static var isY:Number;
  21.     static var isXs:Number;
  22.     static var isYs:Number;
  23.  
  24.    
  25.     public function getOrigin (startX:Number,startY:Number,startXs:Number,startYs:Number) {
  26.                     targetX = startX;
  27.                     targetY = startY;
  28.                     targetXs = startXs         
  29.                     targetYs = startYs;
  30.                     zoom(delay, targetX, targetY);
  31.     }
  32.    
  33.     public function getTarget(factor:Number,startX:Number,startY:Number,startXs:Number,startYs:Number) {
  34.                     targetX = startX+(startX-_root._xmouse)*factor;
  35.                     targetY = startY+(startY-_root._ymouse)*factor;
  36.                     targetXs = targetXs < maxim ? (targetXs = startXs*factor) : maxim;
  37.                     targetYs = targetYs < maxim ? (targetYs = startYs*factor) : maxim;
  38.                     zoom(delay, targetX, targetY);
  39.     }
  40.    
  41.     public function zoom (delay:Number, targetX:Number, targetY:Number) {
  42.                     onEnterFrame = function(){
  43.                         difX = targetX - _x;
  44.                         difY = targetY - _y;
  45.                         difXs = targetXs - _xscale;
  46.                         difYs = targetYs - _yscale;
  47.                         _xscale += (difXs/delay);
  48.                         _yscale += (difYs/delay);
  49.                         if(_xscale < 101 || _yscale < 101){ _xscale = 100, _yscale = 100, pressed = 'MIN', delete onEnterFrame;
  50.                         }else if(_xscale >= (maxim-1) || _yscale >= (maxim-1)){ _xscale = maxim, _yscale = maxim, pressed = 'MAX', delete onEnterFrame;
  51.                         }else {_x += (difX/delay), _y += (difY/delay);}
  52.                     }
  53.     }
  54.    
  55.     public function onPress(){
  56.                     if(pressed == 'MIN') getTarget(target, _x, _y, _xscale, _yscale);
  57.     }
  58.    
  59.     public function onRelease(){
  60.                     getOrigin(isX, isY, isXs, isYs);
  61.     }
  62.    
  63.     public function onReleaseOutside(){
  64.                     getOrigin(isX, isY, isXs, isYs);
  65.     }
  66.  
  67.     public function init (_tar:Number, _del:Number, _max:Number){
  68.                     pressed = 'MIN';
  69.                     target = _tar;
  70.                     delay = _del;
  71.                     maxim = _max == undefined ? defaultMax : _max;
  72.     }
  73.    
  74.     public function zoomClass (){
  75.                     isX = _x;
  76.                     isY = _y;
  77.                     isXs = _xscale;
  78.                     isYs = _yscale;             
  79.                     getOrigin(isX, isY, isXs, isYs);
  80.     }
  81. }


allles, wa sihr noch braucht ist einen mc in der bib mit folgenden eigenschaften:

Bezeichner: mc
AS 2.0 Klasse: zoomClass

Verknüpfung:
Haken bei 'Export für AS' und bei 'In erstes Bild exportieren'.


und ein kleines script auf zeitleiste:
ActionScript:
  1. var mc = this.attachMovie('mc','zoom_mc',100, {_x:300,_y:300});
  2. mc.init(10,5,1000);

die funktion init() erwartet drei params:

1. param = target ist ein faktor
2. param = delay der devisor
3. param = [ optional] maximale skalierung, wenn nicht übergeben, wird standard 500% genommen


that´s all...

ansehen kann man sich das ganze hier:

ANGUGGEN


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 20-04-2004, 21:14   #2 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
solltet ihr beim einfügen des scriptes in eine *.as datei fehlermeldungen bekommen, so liegt das nicht daran, dass das script falsch wäre oder ihr einen fehler gemacht habt, sondern daran, dass das board hier leider falsch umbricht...


die beiden übeltäter sind :
die funktion 'getOrigin' und 'getTarget' !

bei beiden müsst ihr am ende der funktionsdeklarierungszeile natürlich schliessen.
sprich: den verflixten umbruch raus machen...
dann läuft´s auch...


und irgendwelche kommentare zu dem ding ? *gugg*


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 26-04-2004, 16:25   #3 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
Zitat:
Geschrieben von kelor
...und irgendwelche kommentare zu dem ding ? *gugg*
....ja:

geil !
warrantmaster ist offline   Mit Zitat antworten
Alt 26-04-2004, 17:56   #4 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
Hmm

Ich finds nicht sooo gut. Kritikpunkte:
  • Es muss ein MovieClip verwendet werden ... was wenn der MovieClip aber auch auf eine andere Klasse definiert werden.
  • Die Befehle sollten nicht auf Eventhandler gemappt werden (weil die vielleicht auch über ein Control gesetztn werden wollen)
  • generell ist der Zugang unintuitiv: Es exisitieren keine Klaren definitionen über den Zoomstatus. (getZoomLevel) oder ein dezidiertes setzen (setZoomLevel) oder ein Verschieben ... irgendwie würd ich das lieber über ein Interval handhaben ...
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 26-04-2004, 19:09   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ich muss dazu sagen, das ich lediglich das ursprungsscript lauffähig umgeschrieben hatte in ne 2004er version...

zu punkt 3
gebe ich dir wegen des intervals recht.
da wäre ein interval auch eher mein ding.

wegen unintuitiv...hmmm... das ist wohl eher etwas für den user, als für den entwickler...oder findest du nicht?! eine´info über den zoomlevel kan man als spielerei einbauen, als beigabe...hat aber nix mit der funktionalität zu tun...find ich...

zu punkt2:
welche controls sollten noch auf einer z.bsp. karte integriert sein.
nope - kann ich so nicht sehen...das ding hat ja keine andere berechtigung, als das gezoomt werden...alles andere betrifft dann etwaige weitere mc´s, die in oder auf dem zoom-mc schlummern...

wenn, dann würd ich eh alles andere über ein control-class abwickeln wollen und nicht über den zoom-mc.
[vielleicht geschmackssache...]

zu punkt1:
um ehrlich zu sein, weis ich nicht ganz, worauf du hinaus willst...
ja, man braucht nen mc...und?! *koppkratz*
erklär mal...
ne karte oder ähnliches ist meist ein grafisches element, dass man in der regel, in einen mc stopft...
kann dir da leider net ganz folgen, kaneda...
hope u clear my way...


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 26-04-2004, 19:53   #6 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
hämm

also mal schauen:

Ich hab 0 Zeit deswegen versuch ich kurz einen Vorschau zu geben : Alle deine Methoden sind fix auf deine Struktur belegt, sehr statisch. Man könnte beispielsweise einen Controller hernehmen der auf einen MOvieClip all das anlegt und dezidiert darauf bauen das jede Method separat aufgerufen werden kann und das die Methoden so minimalisitisch wie möglich sind. K(aum)eine Variablen direkt zu verwenden. Vielleicht komm ich noch dazu mehr zu schreiben.
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 26-04-2004, 20:02   #7 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
Thumbs up

cooles teil!! gefällt mir

des könnte man prima zu ner navi ausbauen
zb mit einer doppelcklickt schnell zomm funktion etc...
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 26-04-2004, 20:42   #8 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
yepp bloba...z.bsp.

@kaneda: oha..ich ahne schon, worauf du hinaus willst...und um ehrlich zu sein, fürchte ich, dass das in einer grundsatzdiskussion zwischen einem 'codedesign-freak' [dir] und einem 'ungelernten selfmade-progger' [mir] endet.


du kennst sicherlich meine meinung bezüglich den meisten formen von codedesign...

und - und das ist auch eine wahrheit - leiden die meisten schön durchdesignten codes an tempo...will heißen performance.

natürlich könnte man jede mathematische berechnung einzeln in einen methode stopfen...

natürlich könnte ich jede methode so schlank als [un]möglich halten.

und natürlich kann man es so strukturieren, dass ich jede methode einzel aufrufen könnte...aber wozu?!
mir verschließt sich hier der sinn, so etwas zu tun...welchen nutzen sollte es mir bringen, methoden einzeln aufrufen zu können, die zwangsläufig aber nur miteinander ein sinnvolles ergebnis liefern...davon mal ab, dass jeder weitere methodenaufruf nur unnötig zeit in anspruch nimmt - und das bei einer 'speedgranate' wie AS...


design sollte immer einen vorteil bringen und nicht des designs wegen genutzt werden...

was nutzt mir der 27te designte stuhl von 'totaly kaputschnyi', wenn mir der ar*** darauf weh tut?!



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 26-04-2004, 20:58   #9 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Zitat:
Geschrieben von kelor

was nutzt mir der 27te designte stuhl von 'totaly kaputschnyi', wenn mir der ar*** darauf weh tut?!
Einleuchtendes Argument
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 26-04-2004, 22:33   #10 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
hmm

Tut mir leid ... ich bin nicht der ansicht. Es tut mir echt leid weil ich diese Diskussion kenne. (Also weil wir gerade in die Diskussion gerutscht sind)

Ich denke Softwaredesign hat einen Hintergrund als hier illustriert. Ich vergleiche es eher mit einem Werkzeug:
Du willst etwas erreichen: sagen wir ein Bild(Hausnummer fällt mir gerade ein, kann auch was ganz anderes sein). Und du hast ein paar Werkzeuge zur Auswahl:
  • Einen ganz kleinen feinen Pinsel
  • Einen grossen Malerpinsel mit kantigen Borsten.
  • Einen mittelgrossen Pinsel mit einer feinen kante
  • Einen mittelgrossen runden Pinsel

Und wenn du das Bild malst musst du farbe draufbringen. Das heisst du brauchst Töpfe. Der Pinsel muss in den Topf passen (grosse Pinsel passen nicht in alle Töpfe) und er darf nicht drin untergehen: Warum? weil sonst die Arbeit patzt und das bild wird verkleckert. Oder du hast weniger Farben zur verfügung.

Wenn man C hernimmt ist das wie der feinste pinsel mit den grössten & meisten töpfen die man sich vorstellen kann. Man kann alles Zeichnen, grosse wie kleine Dinge, in allen Fraben, und wenn man sauber ist, patzt das auch nicht.

Wenn man Java hernimmt ist der Pinsel nicht mehr so fein (weil es ja in einer VM läuft) also lassen sich nicht mehr alle Bilder zeichnen jedoch ist Java durchdacht was einem erlaubt alle Farben herzunehmen, der Pinsel ist auch gut ausgearbeitet so dass wenn man ihn schräg hält viele möglichkeiten offen hält, er ist auch schneller wie der C weg weil man viel vorgefertigt hat und weil sich alle an die selben richtlinien halten.

Wenn man Flash hernimmt ist das momentan eine sehr wage sache: Maler in Flash haben selten gute Pinsel weil manchmal Pferdehaare (MacromediaKlassen), Schweineborsten (Klassen aus irgendwelchen Foren), und Menschenhaaren(also selbstgestrickten) zusammengebaut sind. Wenn man sich an kein Muster und an kein Qualitätssiegel hält dann kriegt man nie saubere Bilder zusammen. Ausserdem sind die Pinsel meist Breit und gross, damit man schnell grosse Flächen mit der selben Farbe ausmalen kann...... (das jedoch sehr verfranst ist)

Den Java Weg finde ich super weil der Pinsel ziemlich gut ist von Anfang an und weil man alles schnell machen kann, man hat oft eine Ahnung was passiert, es geht sehr viel auch noch sehr Betriebssystem nahe und die Entwickler sind sich einig was abgeht (und optimieren darauf hin).


TATSACHEN (die Moral von der lustigen Geschichte):
  • Meist macht Softwarearchitektur Software schneller (weil überflüssiger Code entfernt wird / Techniken entwickelt werden die einfach schneller sind)
  • Publizierter Code hat ein paar Anforderungen: Er muss gut lesbar sein und einfach verständlich, einfach Code aus einem Forum kopieren ist schnell gemacht einen Bug finden oder das Ding zu modden schwer
  • Aufteilen in Methoden macht es einem selbst viel einfacher Lecks in Code zu finden und die Applikation schneller zu machen.
  • Sauberer Applikationsaufbau ermöglicht ein breiteres Spektrum an Implemenationen/Alternativen. Wenn etwas strikt an einen Anwendungsfall gebunden ist werden die Leute immer wieder auf die Idee kommen eine sehr umständliche Lösung für einen ähnlichen Fall zu finden und es wird solange gemacht bis jeder seine eigene Lösung hat und Code nicht mehr ausgetauscht werden kann -> Chaosentwirrer wird vielleicht mal ne tolle geldquelle.

Wenn du etwas in einem Forum publizierst sollte es separierten Zugang haben.

Unter separiertem Zugang verstehe ich:
  • darf keine andere standardfunktionalität ausschliesen (wenn du extends Movieclip verwendest und object.registerClass dann kann kein anderes Objekt mehr darauf zugreifen, man stelle sich vor jemand möchte das aber auf einen MovieClip anwenden den er bereits mit Funktionalität gefüllt hat, onenterframe ist auch ein leidiges thema)
  • Zoomen kann man bei dir nur auf MovieClips wobei es eigentlich für jegliche Art von Rechteck möglich wäre (auch die Animation davon).
  • Deine Methoden sind abhängig von der Ausgangsituation das jemand genau diesen Fall braucht: Wenn man draufklickt und beim draufklicken hinzoomen will und dann abhängig von der position dorthinkommt. (was wenn jemand das per Zeit oder per serverseitigem aufruf machten will (keine Ahnung)
  • wenn jemand die methoden durchliest kann man sich nur schwer vorstellen was man sich meint.

vieleicht hab verdeutlicht was ich meine,
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 26-04-2004, 22:49   #11 (permalink)
[Matthias K.] - Moderator
 
Benutzerbild von Madokan
 
Registriert seit: Jun 2001
Ort: Berlin/Germany - and the hole World !
Beiträge: 9.971
@Diskussionsgruppe kelor/kaneda: Jungs ich könnt jetzt den Informatiker raus hängen lassen - aber meine Antwort zu dieser Diskussion an dieser Stelle: Ich find es klasse das Rainer (kelor) das Skript angepasst hat - wieviel Zeit er für OOA und OOD verschwendet hat sei mal dahin gestellt - was mir nicht passt ist das daraus eine Grundsatzdiskussion gestrickt wird. Macht doch dafür einen neue Thread auf - die Zoom-Klasse wird es euch danken und ich auch.

By the way wozu gibt es updates - macht es wie die grossen. Das ist Zoom Klasse v1.0 und in kürze, wenn genügend Zeit ist gibts v1.1 oder v2.0 - je nach Modifikationen und Erweiterungen.

Liebe Grüsse
Matze K.

P.S.: Sorry für den unterschwellige und offensichtlichen Sarkasmus - aber diese Diskussion ist für mich einfach nur noch ein schmutzeln wert. Gibt eine tolle Lösung: Jeder sollte nach seiner Lösung streben mit, welcher er gut auskommt, alles andere ist heisse Luft!
Madokan ist offline   Mit Zitat antworten
Alt 26-04-2004, 23:14   #12 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
hmm

*heisseluftschwafel*
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 27-04-2004, 00:06   #13 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
Zitat:
...wieviel Zeit er für OOA und OOD verschwendet hat sei mal dahin gestellt - was mir nicht passt ist das daraus eine Grundsatzdiskussion gestrickt wird.

meine meinung...

und kaneda...ganz so 'unbedarft', wie du vielleicht denken magst ist deine umwelt mitnichten...



aber lassen wir das...ich habe diese diskussionen schon gehört, da glaubten noch ganz andere alles zu wissen...



Zitat:
TATSACHEN (die Moral von der lustigen Geschichte):

Meist macht Softwarearchitektur Software schneller (weil überflüssiger Code entfernt wird / Techniken entwickelt werden die einfach schneller sind)

Publizierter Code hat ein paar Anforderungen: Er muss gut lesbar sein und einfach verständlich, einfach Code aus einem Forum kopieren ist schnell gemacht einen Bug finden oder das Ding zu modden schwer

Aufteilen in Methoden macht es einem selbst viel einfacher Lecks in Code zu finden und die Applikation schneller zu machen.

Sauberer Applikationsaufbau ermöglicht ein breiteres Spektrum an Implemenationen/Alternativen. Wenn etwas strikt an einen Anwendungsfall gebunden ist werden die Leute immer wieder auf die Idee kommen eine sehr umständliche Lösung für einen ähnlichen Fall zu finden und es wird solange gemacht bis jeder seine eigene Lösung hat und Code nicht mehr ausgetauscht werden kann -> Chaosentwirrer wird vielleicht mal ne tolle geldquelle.
warum kommt mir das so bekannt vor und warum muss ich darüber schmunzeln...?!*g*

das wort : TATSACHEN...hähä... *bauchhalt*

Zitat:
angeregt durch den threat untern drunter 'pendant zum prototype' habe ich hier eine kleine zoom-klasse gebastelt.

dabei galt als vorlage die alten 'mc-prototype-methoden' aus oben genannten threat.

just my intention...noth more







greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 27-04-2004, 08:37   #14 (permalink)
thinkin aBout tha lib.
 
Benutzerbild von kaneda
 
Registriert seit: Nov 2001
Ort: Kölle
Beiträge: 1.379
Hmm

Okay. wie madokan angedeutet hat sollten wir das besser lassen... lebe dein Zeugs für dich hin. Ich werde es nicht verwenden und auch nicht für gut empfinden.
__________________
Back to community with http://leichtgewicht.at
kaneda ist offline   Mit Zitat antworten
Alt 27-04-2004, 11:31   #15 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
ohne in den Code gekuckt zu haben muss ich sagen das Ding ist für nen Picture Viewer wohl mehr als brauchbar...

sieht auf jeden Fall fein aus

achja:
Wer wie lange über was nachdenkt soll das für sich entscheiden...
Fakt ist das in der heutigen Arbeitswelt Praktiker gesucht werden - die ihr zeug schnell erledigen....und keine Leute die sich 5 tage lang den Kopf über irgendwelche tollen Strukturen zerbrechen - und im Endeffekt kommt dann das gleiche bei raus ...
das ist zwar nicht immer - aber hierzu meine Meinung !

Gruss nky
nky 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 18:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele