Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-08-2005, 22:10   #1 (permalink)
Ein Reisender...
 
Benutzerbild von Syracus
 
Registriert seit: May 2004
Beiträge: 105
Bouncing Window

Fragen über Fragen!

Ich habe ein Bouncing Window (von mir mit mx.transitions) mit Schatten (nicht von mir) gebastelt.

Siehe Anhänge...swf und fla.

Was ich aber trotz mehrmaligen Probieren nicht zu Rande bringe ist, dass der Schatten sich NICHT mit vergrössert, sondern gleich bleibt.

Zudem möchte ich externe mc's reinladen, wenn das Fenster fertig gebounced hat (den Ort habe ich mit "aus" - Textfeld markiert). Aber das Problem ist, wie kann ich das Fenster in die jeweilige Grösse der externen mc's bringen da ich ja deren Grösse nicht weiss...

Zudem sind die Parameter nicht so besonders schlau gewählt...

Ich hoffe Ihr wisst Rat und könnt mir dabei helfen...:

ActionScript:
  1. // Funktion aktivieren
  2.  
  3. onLoad = function ()
  4. {   
  5.  
  6.     function update(){
  7.        
  8.         // Variablen Rahmen
  9.         var x     = -54;
  10.         var y     = -54;
  11.         var width109;
  12.         var height109;
  13.         var blur  =   5;
  14.         var color = 0x333333;
  15.         var alpha =   20;
  16.        
  17.         // FVariablen :      FensterClip, xPos, yPos, xFaktor, yFaktor, xPosZeit, yPosZeit, xZeit, yZeit, Cor
  18.         _root.setzeFenster (_root.mc_container, 00200200,   100, 100, 100, 100, 15);
  19.  
  20.         // Funktionsaufruf Schatten
  21.         rahmen.clear();
  22.         rahmen.blurredRect(x, y, width, height, blur, color, alpha);
  23.         rahmen.drawRahmen(0xFFFFFF,80);
  24.         }
  25.  
  26.     function init() {
  27.         rahmen = _root.mc_container.mc_inhalt;
  28.         update();
  29.         }
  30.         init();
  31.    
  32.  
  33. };
  34.  
  35. // Funktion Fenster setzen
  36.  
  37. function setzeFenster (FensterClip, xPos, yPos, xFaktor, yFaktor, xPosZeit, yPosZeit, xZeit, yZeit, Cor)
  38. {
  39.    
  40.     var tweenWidth = FensterClip;
  41.     tweenWidth.anfangWidth = FensterClip._width + Cor;  // Cor ist Korrektur
  42.     tweenWidth.endeWidth = FensterClip._width + xFaktor;
  43.     tweenWidth.dauerWidth = xZeit;
  44.    
  45.     var tweenHeight = FensterClip;
  46.     tweenHeight.anfangHeight = FensterClip._height + Cor; // Cor ist Korrektur
  47.     tweenHeight.endeHeight = FensterClip._height + yFaktor;
  48.     tweenHeight.dauerHeight = yZeit;
  49.    
  50.     var tweenX = FensterClip;
  51.     tweenX.anfangX = FensterClip._x;
  52.     tweenX.endeX = FensterClip._x + xPos;
  53.     tweenX.dauerX = xPosZeit;
  54.    
  55.     var tweenY = FensterClip;
  56.     tweenY.anfangY = FensterClip._y +Cor;
  57.     tweenY.endeY = FensterClip._y + yPos;
  58.     tweenY.dauerY = yPosZeit;
  59.    
  60.     FensterClip.onPress = function ()
  61.         {
  62.         changeSize (this);
  63.         };
  64. }
  65.  
  66. // Ease - Container
  67.  
  68. function changeSize (obj)
  69. {
  70.         var tweenWidth = new mx.transitions.Tween (obj,
  71.         "_width", mx.transitions.easing.Elastic.easeOut, obj.anfangWidth,
  72.         obj.endeWidth, obj.dauerWidth);
  73.        
  74.         var tweenHeight = new mx.transitions.Tween (obj,
  75.         "_height", mx.transitions.easing.Elastic.easeOut, obj.anfangHeight,
  76.         obj.endeHeight, obj.dauerHeight);
  77.        
  78.         var tweenX = new mx.transitions.Tween (obj,
  79.         "_x", mx.transitions.easing.Elastic.easeOut, obj.anfangX,
  80.         obj.endeX, obj.dauerX);
  81.        
  82.         var tweenY = new mx.transitions.Tween (obj,
  83.         "_y", mx.transitions.easing.Elastic.easeOut, obj.anfangY,
  84.         obj.endeY, obj.dauerY);
  85.        
  86.         tweenWidth.onMotionFinished = function ()
  87.         {
  88.         aus = "Bewegung fertig!"; // Hier kann man ein LoadClip machen
  89.         };
  90. }
  91.  
  92.  
  93. // Schatten
  94.  
  95. MovieClip.prototype.drawRahmen = function(c,a) {
  96.        
  97.         this.lineStyle(1,col,15);
  98.         this.moveTo(startX,startY);
  99.         this.beginFill(c,a)
  100.         this.lineTo(startX+breite,startY);
  101.         this.lineTo(startX+breite,startY+hoehe);
  102.         this.lineTo(startX,startY+hoehe);
  103.         this.lineTo(startX,startY);
  104.         this.endFill()
  105.         updateAfterEvent();
  106.         //drawShaddow();
  107. };
  108. MovieClip.prototype.drawRect = function(x1, y1, w, h,c,a,lthick,lc,la) {
  109.         this.lineStyle(lthick,lc,la);
  110.         this.moveTo(x1,y1)
  111.         this.beginFill(c,a)
  112.         this.lineTo(x1+w,y1)
  113.         this.lineTo(x1+w,y1+h)
  114.         this.lineTo(x1,y1+h)
  115.         this.lineTo(x1,y1)
  116.         this.endFill()
  117. };
  118.  
  119. MovieClip.prototype.blurredRect = function(x, y, width, height, blur, color, alpha) {
  120.         this.lineStyle();
  121.         var f = [];
  122.         var sum = 0;
  123.         for (var i = 1; i<blur+1; i++) {
  124.                 f[i-1] = i*i;
  125.                 sum += f[i-1];
  126.         }
  127.         var newfactor= 2;
  128.         var counter = 40;
  129.         do {
  130.                 factor=newfactor
  131.                 var b = 0;
  132.                 for (var i = 0; i<=blur; i++) {
  133.                         var ftemp = (f[i]*(factor*alpha)/sum)/100;
  134.                         b = b*(1-ftemp)+ftemp;
  135.                 }
  136.                 counter--;
  137.                 newfactor *= alpha/(100*b);
  138.         } while ((counter>0) && (Math.abs(100*b-alpha)>.5));
  139.         for (var i = 0; i<=blur; i++) {
  140.                 f[i] *= (factor*alpha)/sum;
  141.         }
  142.         for (var i = 0; i<=blur; i++) {
  143.                 this.beginFill(color, f[i]);
  144.                 this.roundRect(1+(x+i)-blur/2, 1+(y+i)-blur/2, x+width-i+blur/2-1, y+height-i+blur/2-1, blur-(i*2/3));
  145.                 this.endFill();
  146.         }
  147. };
  148. MovieClip.prototype.roundRect = function(x1, y1, x2, y2, r) {
  149.         r = Math.min(Math.abs(r), Math.min(Math.abs(x1-x2), Math.abs(y1-y2))/2);
  150.         var f = 0.707106781186548*r;
  151.         var a = 0.588186525863094*r;
  152.         var b = 0.00579432557070009*r;
  153.         var ux = Math.min(x1, x2);
  154.         var uy = Math.min(y1, y2);
  155.         var lx = Math.max(x1, x2);
  156.         var ly = Math.max(y1, y2);
  157.         this.moveTo(ux+r, uy);
  158.         var cx = lx-r;
  159.         var cy = uy+r;
  160.         this.lineTo(cx, uy);
  161.         this.curveTo(lx-a, uy+b, cx+f, cy-f);
  162.         this.curveTo(lx-b, uy+a, lx, uy+r);
  163.         cy = ly-r;
  164.         this.lineTo(lx, cy);
  165.         this.curveTo(lx-b, ly-a, cx+f, cy+f);
  166.         this.curveTo(lx-a, ly-b, lx-r, ly);
  167.         cx = ux+r;
  168.         this.lineTo(cx, ly);
  169.         this.curveTo(ux+a, ly-b, cx-f, cy+f);
  170.         this.curveTo(ux-b, ly-a, ux, ly-r);
  171.         cy = uy+r;
  172.         this.lineTo(ux, cy);
  173.         this.curveTo(ux+b, uy+a, cx-f, cy-f);
  174.         this.curveTo(ux+a, uy+b, ux+r, uy);
  175. };

Beste Grüsse, Syra
__________________
Handle so, dass die Maxime Deines Willens als Gesetzgebung gilt :o)

Geändert von Syracus (26-11-2005 um 11:55 Uhr)
Syracus ist offline   Mit Zitat antworten
Alt 26-08-2005, 09:08   #2 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
Auf Deine Fragen:

1.)
rahmen = _root.mc_container.mc_inhalt;
fenster = _root.mc_container;
--> rahmen befindet sich im fenster --> wenn Du das Fenster veränderst, ändert sich der Rahmen mit! Nimm den Schatten raus aus dem Fenster, leg ihn in einen eigenen MC dann geht's!

2.)
die Grösse reingeladener MCs sind in Flash erst verfügbar, wenn der MC fertig reingeladen wurde. Kannst Du dann über _width und _height abfragen.
Mach doch erst das Laden, und wenn das Fertig ist, dann das Bouncen.
__________________
Grüße,
solo

Die Antwort auf fast alle Fragen gibt es hier: AS-Referenz
Weitere Fehlerquellen sind:
Flasche Pfadangeben oder falsch versorgte Variablen. Beides kann man gut hiermit überprüfen.
Und den Debugger gibts ja auch noch :)
soloFlash ist offline   Mit Zitat antworten
Alt 26-08-2005, 09:48   #3 (permalink)
Ein Reisender...
 
Benutzerbild von Syracus
 
Registriert seit: May 2004
Beiträge: 105
Problem

Danke für die Antwort aber:

Zitat:
rahmen = _root.mc_container.mc_inhalt;
fenster = _root.mc_container;
--> rahmen befindet sich im fenster --> wenn Du das Fenster veränderst, ändert sich der Rahmen mit! Nimm den Schatten raus aus dem Fenster, leg ihn in einen eigenen MC dann geht's!
Frage 1: Nun der Schatten muss ja zum Clip mc_container gehören. Wie bringe ichs denn fertig ihn in einen eigenen mc zu bringen? Meinst Du das so, dass ich einen neuen mc_rahmen schaffe, der dann aber die Parameter des Fensters mitübernehmen kann?

Frage 2: Wie in aller Welt lade ich am Ende swf's rein, das hat nicht so richtig geklappt bei mir...und wird der swf, denn nicht auch verzogen?

lg Syra
__________________
Handle so, dass die Maxime Deines Willens als Gesetzgebung gilt :o)

Geändert von Syracus (26-08-2005 um 09:50 Uhr)
Syracus ist offline   Mit Zitat antworten
Alt 26-08-2005, 10:06   #4 (permalink)
Ein Reisender...
 
Benutzerbild von Syracus
 
Registriert seit: May 2004
Beiträge: 105
Variablen zusammennehmen

Scheint ne Knacknuss zu sein...

Ich weiss echt nicht wie man das löst oder ob es tatsächlich so einfach ist wie Du sagst. Baue ich einen neuen mc_rahmen und lasse Ihn mit dem bouncing Fenster vergrössern, wird der neue Rahmen sich ja ebenfalls mitverändern müssen...

Die Lösung läge wohl eher darin, die Variablenwerte des Rahmens zu bearbeiten. Das heisst zu VERKLEINERN, wenn sich das Fenster vergrössert. Wäre aber ne Heidenarbeit! Ich hoffte aber auf eine einfachere Lösung...z.B mit einem mc der nicht auf Skallierungen reagiert bloss seine Grösse verändert...hmm das aber sounds nach übler Sience Fiction...

Grüsse, Syra
__________________
Handle so, dass die Maxime Deines Willens als Gesetzgebung gilt :o)
Syracus ist offline   Mit Zitat antworten
Alt 26-08-2005, 12:39   #5 (permalink)
oEF(etischist)
 
Registriert seit: Dec 2003
Ort: muc
Beiträge: 664
Deine Aufbau:
_root
...+ mc_container
......+ mc_rahmen

wenn Du einen MC veränderst (grösse...), dann nimmt der natürlich alle darin enthalten MCs mit.
selbstverständlich kannst Du dagegensteuern (container vergrössern, rahmen verkleinern), aber damit das passt, ist wohl wirklich viel arbeit notwendig.

Alternativer Aufbau (Rahmen nicht mehr im Container)
_root
...+ mc_container
...+ mc_rahmen

Coantaineränderungen berühren den Rahmen nicht mehr!

zur anderen Frage:
loadMovie lädt Dateien. Wenn der Pfad stimmt, dann klappt es.
ja, natürlich wird der "mitverzogen", wenn er innerhalb des MCs liegt, der verändert wird.

Wenn ich verstanden habe, was Du vorhast (swf laden, dann Rahmen entsprechend anpassen):
ich würde erst laden, dann über die "preloader-technik" warten, bis er fertig geladen ist, dann grösseneigenschaften abfragen, und dann den container bouncen lassen.

wolltest Du das so?
__________________
Grüße,
solo

Die Antwort auf fast alle Fragen gibt es hier: AS-Referenz
Weitere Fehlerquellen sind:
Flasche Pfadangeben oder falsch versorgte Variablen. Beides kann man gut hiermit überprüfen.
Und den Debugger gibts ja auch noch :)
soloFlash ist offline   Mit Zitat antworten
Alt 26-08-2005, 17:40   #6 (permalink)
Ein Reisender...
 
Benutzerbild von Syracus
 
Registriert seit: May 2004
Beiträge: 105
Danke für Deinen Einsatz!

Dennoch weiss ich nicht, ob ich mich passend ausgedrückt habe. Ich möchte ja, dass sich der Rahmen mit dem gebounceden Fenster verändert, jedoch nur in der width und length, nicht in der Dicke. Daraus schliesse ich also, es gibt keine andere Lösung als die die ich schon weiss, nämlich die, dass man die Variablenwerte des Rahmens mitverändern muss, je nach Fenster... oder will ich Dich einfach nicht verstehen...???

Also ich habe das mit dem separaten Rahmen ausprobiert, dass man das tun kann ist klar, doch der Rahmen bleibt dann eben einfach was für sich und ich will ja, dass er mitbounced...

Das zweite wollte ich so, vielen Dank

Beste Grüsse, Syra
__________________
Handle so, dass die Maxime Deines Willens als Gesetzgebung gilt :o)

Geändert von Syracus (26-08-2005 um 17:43 Uhr)
Syracus 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 21:36 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele