Flashhilfe.de - Flash Community

Sitecheck : www.zill-music.de

Forum > Plauderecke und sonstige Themen > Sitecheck : www.zill-music.de

 


AntwortenRegistrieren Seite1 2  

 07.06.2009, 11:54Re16
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

ah cool. ey, das rockt ja mal. der perfomancegewinn ist echt krass :) vielen dank für den super tipp :)
 07.06.2009, 14:19Re17
Beiträge: 154
Registriert: Jun 2005

gerne ;)

schau mal da verwende ich die selbe technik: ambi light läuft auf meinem Rechner auf 120 fps,
die langsamen Rechner sollten immer noch 60fps erreichen.
Grüße
 
nicht sichtbar bei eingeloggten Mitgliedern
 07.06.2009, 14:49Re18
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

coole sache, läuft bei mir auch mit 118 - 121 / 120..... da geht noch was :D
 07.06.2009, 16:04Re19
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

sodala, ich hab jetzt noch die galerie hinzugefügt, und bis auf den mp3 player alles debuggt. wenn jemand da nochmal final drüber schauen könnte, wäre das nett :)

vielen dank.
 07.06.2009, 17:16Re20
Benutzerbild von springerFlashhilfe.de Moderator
Beiträge: 4906
Wohnort: zuhaus
Registriert: Apr 2004

hi,
beim ersten click auf den volumeslider hatte ich folgenden fehler...

PHP:
1
2
3
4
5
6
7
8
9
<?
TypeError
Error #1009: Der Zugriff auf eine Eigenschaft oder eine Methode eines null-Objektverweises ist nicht m&ouml;glich.
   
at playerClass/setVolume()
   
at playerClass/startVolume()
   
at flash.events::EventDispatcher/dispatchEventFunction()
   
at flash.events::EventDispatcher/dispatchEvent()
   
at volumeBar/adjustVolume()
?>


ansonsten ist mir jetzt nichts mehr aufgefallen....
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen...
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 07.06.2009, 18:26Re21
Beiträge: 154
Registriert: Jun 2005

Hi,

da kann man noch ein paar dinge verbessern,

-buttonmode auf allen links
-scroller auch mit mouseWheel ( für mac brauchst du ne js lösung google nach "as3 MacMouseWheel")
-richtick schick wär deeplinking ( SWFAddress )
-mehr übergangseffeckte bei den hauptkategorien ( den content einmal flippen oder so wie beim übergang zur gallery )
-gallery bilder nur bei mouseDown drehen ( find ich persöhnlich besser weil man so die bilder besser anklicken kann)
-bg wird nicht mehr vom kompletten disp. beeinflusst... vll kann man den effeckt auch noch etwas vestärken? Poste doch mal den Code wenn du da nicht weiter kommst.

Fehler sind bei mir keine, aber die fps sind noch zu niedrig.
Was läuft denn alles in einem onEnterFrame oder Intervall? Vll kannst du gerade dort noch was optimieren ( deactiviere vll mal einigis um zu sehen wo genau der performance fresser ist. Ich schalte dazu immer die FPS auf max 120 so kannst du viel genauer sehen was wieviel fps frisst). Hast du den disp fx im enterFrame oder Intervall?

Design,
-Zuviele verschiedene Typo größen
-Kein Raster angelegt siehe Anhang, mit Grid sieht es einfach aufgeräumter aus( gutes tut dazu: http://www.smashingmagazine.com/2008/03/26/grid-based-design-six-creative-column-techniques/ und  http://www.markboulton.co.uk/articles/detail/five_simple_steps_to_designing_grid_systems/ )

Grüße

Angehängte Dateien:
Bild raster.jpg64.50 KB
 07.06.2009, 19:31Re22
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

@springer: vielen dank. das werde ich gleich mal überprüfen, dass hängt mit dem ladezustand zusammen.

@marianG: "gallery bilder nur bei mouseDown drehen", das ist eine sehr gute Idee. Die anderen Punkte werde ich dezent unter den Tisch fallen lasse, weil das Budget so niedrig ist, dass ich mich der Seite eher als ein Referenzprojekt angenähert habe.

"buttonmode auf allen links" - liegt drauf, keinen plan warum das nicht fusioniert. debugge ich aber auch nicht mehr.
"scroller auch mit mouseWheel" - muss ich mal guggen, das müsste drin sein.
"richtick schick wär deeplinking" - der kriegt parallel noch ein blog von mir, da kann er wichtige sachen posten.
"mehr übergangseffeckte bei den hauptkategorien" - hatte ich geplant, aber ich denke nach dem fünften mal gehts dir auf den kecks.
"bg wird nicht mehr vom kompletten disp. beeinflusst..." was meinst du mit der wird nicht mehr komplett beeinflusst?


das mit den fps ist so ne sache, ich rutsche nie unter 20 mit meinem rechner hier. auf dem netbook meiner freundin läuft sie mit ca 8-13 fps.
Daher Frage an alle: was habt ihr für eine Monitorauflösung?

code für die displacementmap sieht so aus:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package de.kai_reinhardt
{
   
   import away3d.animators.SkinAnimation;
   import flash.events.Event;
   import de.kaireinhardt.BackgroundBitmapData;
   import flash.display.Bitmap;
   import flash.display.BitmapData;
   import flash.display.Sprite;
   import flash.filters.DisplacementMapFilter;
   import flash.geom.Point;
   import flash.utils.Timer;
   import gs.TweenMax;
   import gs.easing.Back;
   import gs.easing.Sine;
   import net.hires.debug.Stats;
   
   
   /**
    * LEERRAUM IMAGINATIONEN
    * www.leerraum-imaginationen.de
    * Dipl.-Des. (UAS) Kai Reinhardt
    *
    */

   
   
   public class BackgroundAnimation extends Sprite
   {
      
      private var _backgroundImage : BackgroundBitmapData;
      private var _displacementMap : BGDisplacementMap;
      private var _bmpContainer : Sprite;
      private var _displacementMapData : BitmapData;
      private var _displacementMapFilter : DisplacementMapFilter;
      private var _bitmap :Bitmap;
      private var _centerPoint : Point;
      private var _backgroundProportions : Number;
      private var _averageFPS : Number;
      private var _fpsCheckCycles : int;
      private var _stopBackgroundAnimation : Boolean = false;
      private var _fpsWatcher : Stats;
      private var _timestampD : Date;
      private var _timestamp : int;
      private var _keepFPS : uint;
      private var _displacementMapBitmap : Bitmap;
      
      public function BackgroundAnimation()
      {
         
         if (stage) init();
         else addEventListener(Event.ADDED_TO_STAGE, init);
         
      }
      
      private function init(ev:Event = null):void {
         
         removeEventListener(Event.ADDED_TO_STAGE, init);
         
         _bmpContainer = new Sprite();
         _fpsWatcher = new Stats();
         _averageFPS = 60;
         _timestampD = new Date();
         _timestamp = _timestampD.time;
         _displacementMapBitmap = new Bitmap();
         
         _bmpContainer.mouseEnabled = false;
         _displacementMap = new BGDisplacementMap();
         
         var getScreenProportions : Number = stage.stageWidth / stage.stageHeight;
         
         _displacementMapData = new BitmapData((stage.stageWidth/3)*2, Math.round((stage.stageHeight*getScreenProportions/3)*2), true, 0xFFFFFFFF);
         _displacementMapData.draw(_displacementMap);

         _backgroundImage = new BackgroundBitmapData((stage.stageWidth/3)*2,Math.round(stage.stageHeight*getScreenProportions/3)*2);
         _bitmap = new Bitmap(_backgroundImage, 'auto', true);
         
         var point : Point = new Point(0,0);
         _displacementMapFilter = new DisplacementMapFilter(_displacementMapData,point,1,1,0,0,"clamp",0,0);
         
         _bmpContainer.addChild(_bitmap);
         
         _bmpContainer.filters = [_displacementMapFilter];
         _centerPoint = new Point (stage.stageWidth >> 1, stage.stageHeight >> 1);
         
         alignObjects();
         addToStage();
         animateMe("up");
         
         TweenMax.to(this, 7, { onComplete:
         function ():void { animateMe("up"); } } );
         stage.addEventListener(Event.RESIZE, onResizeStage);
         
      }
      
      private function animateMe(dir:String):void
      {
         if (_stopBackgroundAnimation == false) {
            
            TweenMax.to(_displacementMapFilter, 6, { scaleY:dir == "up"?27:0,  ease:Sine.easeInOut, onComplete:animateMe, onCompleteParams:[dir == "up"?"down":"up"], onUpdate:function():void { _bmpContainer.filters = [_displacementMapFilter] } } );
            
         }else if(dir =="down"){
            TweenMax.to(_displacementMapFilter, 6, { scaleY:dir == "up"?27:0,  ease:Sine.easeInOut, onComplete:killDisplacementMap, onUpdate:function():void { _bmpContainer.filters = [_displacementMapFilter] } } );
            }
      }
      
      private function killDisplacementMap () :void
      {
         
         _bmpContainer.filters = [];
         
      }
      
      private function alignObjects () :void {
         

         if(stage.stageWidth >= stage.stageHeight){
         
            _backgroundProportions = _bmpContainer.width / _bmpContainer.height;
            _bmpContainer.width = stage.stageWidth;
            _bmpContainer.height = Math.round(_bmpContainer.width / _backgroundProportions);
         
         } else {
            
            _backgroundProportions = _bmpContainer.width / _bmpContainer.height;
            _bmpContainer.height = stage.stageHeight;
            _bmpContainer.width = Math.round(_bmpContainer.height * _backgroundProportions);
            
         }
         
      }
      
      
      private function addToStage():void
      {
         
         _bmpContainer.alpha = 0;
         addChild(_bmpContainer);
         addChild(_fpsWatcher);
         TweenMax.to(_bmpContainer, 0.5, { alpha:1 } );
         onResizeStage();
         
      }
      
      
      private function onResizeStage(ev:Event = null):void {
         
         _centerPoint = new Point (stage.stageWidth >> 1, stage.stageHeight >> 1);

         if (Math.round(stage.stageWidth / _backgroundProportions) >= stage.stageHeight) {
            
            _bmpContainer.width = stage.stageWidth;
            _bmpContainer.height = Math.round(_bmpContainer.width / _backgroundProportions);
         
         } else {
            
            _bmpContainer.height = stage.stageHeight;
            _bmpContainer.width = Math.round(_bmpContainer.height * _backgroundProportions);
            
         }
         

      }
      
   }
   
}
 08.06.2009, 21:48Re23
Beiträge: 154
Registriert: Jun 2005

Hi,

sorry hab dein leckeres Bild kopiert ^^.
Vll ist meine Lösung schneller? Sonst hast du ja eigentlich nichts rechenintensieves oder?
Meine vorgehensweise bringt bei mir 120 / 120 fps >>>  http://cortexdesign.de/experiment/zill/ obwohl ich keine skallierung oder sonstige tricks anwende.
Ich hab mir beim painten von der Displacementmap keine mühe gegeben, dass überlasse ich dir ;)
Du kannst aber gut erkennen wie man die Richtung der Transformation durch verschiedene Farben beeinflussen kann.
Viel spaß beim Muskel studieren - nur schade dass es kein weiblicher Körper ist ^^

Source ( lads schnell runter, brauch den platz )

PS: wenn du mehr speed haben willst, dann kannst du einen Ausschnitt ( bis zur transformationsgrenze ) von dem Körper nehmen und unter den Effeckt legst du das komplette Bild.
Mit matrix.translate kommst du an einen beliebigen Auschnitte von einem Bitmapdata ran!
Geändert von marianG am 08.06.09 um 21:49 Uhr

 08.06.2009, 22:08Re24
Beiträge: 154
Registriert: Jun 2005

der Source noch, damit alle was davon haben ;)

Main
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
34
35
36
37
38
39
40
package{
   
   import flash.display.Sprite;
   import flash.display.Bitmap;
   import flash.events.Event;
   import flash.display.StageAlign;
   import flash.display.StageScaleMode;
   import cortex.fx.dispMove.DispMove;
   import cortex.components.Stats;
   import gs.TweenMax;
   
   public class TestDisp extends Sprite
   {
      public function TestDisp()
      {
         stage.align    = StageAlign.TOP_LEFT;
         stage.scaleMode = StageScaleMode.NO_SCALE;
         var bgFX:Bitmap = DispMove.add(new BG(),new Disp())
         
         // 0x808080 wird nicht vom disp beeinflusst! grün und rot wirken endgegengesetzt.
         addChild(bgFX  );
         bgFX.width = stage.stageWidth
         bgFX.height = stage.stageHeight
         
         addChild( new Stats())
         
         DispMove.value = -11;
         TweenMax.to(DispMove,2,{value:11,yoyo:true})
         
         stage.addEventListener(Event.RESIZE,
                          function():void{
                                         //TweenMax.to(DispMove,2,{value:11,yoyo:true})// value der stageHeight anpassen!
                                       bgFX.width = stage.stageWidth;
                                       bgFX.height = stage.stageHeight;
                                      });
         
      }
      
   }
}


Und hier der eigentlich 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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package cortex.fx.dispMove {
   
   /*
      copyright:    2009 M.Gieseler
      email:      office@cortexdesign.de
      blog:      core.cortexdesign.de
      
      lizens:      macht doch eh jeder was er will
   */

   
   import flash.display.DisplayObject;
   import flash.display.Bitmap;
   import flash.display.BitmapData;
   import flash.filters.DisplacementMapFilter;
   import flash.geom.Matrix;
   import flash.geom.Point;
   
   import flash.utils.setInterval;
   import flash.utils.clearInterval;
   
   public class DispMove {
      
      public static var timer:int;
      public static var output:Bitmap
      public static var dispBMD:BitmapData;
      public static var filter:DisplacementMapFilter;
      
      public function DispMove(){}
      
      public static function add(
                          source:DisplayObject,       // beliebiges DisplayObject
                          displacement:DisplayObject,   // displacement
                          tx:int = 0,ty:int = 0,      // Matrix.scale ( verschiebt das bitmapData vom displacement!)
                          updateTime:int = 100
                          ):Bitmap                  // return BMP
      {
         
         output = new Bitmap(new BitmapData(source.width,source.height))
         output.bitmapData.draw(source)
         
         dispBMD = new BitmapData(source.width,source.height,true,0x000000);
         
         var matrix:Matrix = displacement.transform.matrix;
            matrix.tx = tx
            matrix.ty = ty
            
         dispBMD.draw(displacement,matrix);
         
         filter = new DisplacementMapFilter(dispBMD,null,1,1,0,0,"clamp",0,0);
         
         
         startRendering(updateTime);
         
         return output;
      }
      
      
      public static function clear(  ):void
      {
         stopRendering();
         output.bitmapData.dispose();
         dispBMD.dispose();
         dispBMD = null; output = null;
         
      }
      
      public static function startRendering(updateTime:int = 100):void
      {
         timer = setInterval(render, updateTime);
      }
      
      public static function stopRendering():void
      {
         clearInterval(timer);
      }
      
      public static function render(event:*=null):void
      {
         output.filters = [ filter ];
      }
      
      public static function get value():Number
      {
         return filter.scaleY
      }
      
      public static function set value(value:Number):void
      {
         filter.scaleY = value
      }
      
      
   }
   
}


Also nochmal zum speed Optimieren, die Displacementmap braucht am Rand den Farbwert 0x808080 damit diese stelle nicht beeinflusst wird.

-In Photoshop misst du die Breite und Höhe bis zum vollen Farbwert 0x808080
-In Flash erzeugst du ein BitmapData mit der Abmessung
-falls sich das Displacment nicht auf x=0 und y=0 befindet, erzeugst du eine neue Matrix() matrix.translate(x,y)
-neues Bitmap für das displacement erzeugen und bm.draw( new BG(), matrix)
-Bitmap gegebenenfalls mit x und y neu positionieren
-und das neue Bitmap auf den Hintergrund adden
-bei resize muss dann nur noch der Hintergrund skalliert werden

Grüße
 08.06.2009, 22:14Re25
Beiträge: 154
Registriert: Jun 2005

@echo,

die values abhängig vom beat transformieren ^^
 08.06.2009, 22:27Re26
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

ok, ich habs grade runtergeladen, habs kurz angeschaut, funktioniert, bin baff. ich kanns aber erst morgen richtig auffassen, wochenende durchgearbeitet, heute schon wieder 12 stunden... bin grade groggi.
 09.06.2009, 16:13Re27
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

ich habs! 1 1/2 stunden rumprobieren, bis ich gecheckt hab, dass der timer tatsächlich den perfomance gewinn bringt. das ist echt nützlich! vielen dank an dich!
 09.06.2009, 16:22Re28
Beiträge: 154
Registriert: Jun 2005

Für einen dankbaren Forumuser gerne ;)

Denk aber daran, du kannst noch viel mehr speed rausholen da das bitmapData so immer auf die Ursprungsgröße vom BG berechnet wird. Das würde ich dringend optimieren!
 09.06.2009, 16:27Re29
Beiträge: 18
Wohnort: Baden-Baden
Registriert: Mar 2009

Themenautor/in

hm... naja, auf meiner kiste läuft die seite jetzt mit 61 fps.... ich habs grade auf nem 800Mhz PC getestet, geht auch noch :)
ich denk das reicht mit der optimierung. ich werd heute abend noch das netbook meiner freundin bemühen, und dann is aber feierabend mit der seite.
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1 2  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de