Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-09-2006, 12:00   #1 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
[stuff] pixel flowfield

hallo zusammen,

hier mal wieder was zum rumspielen, testen, weiterentwickeln
und speziel für "Aerks" zum nickeln ...

mich würde auch interessieren ob das ganze bei euch auch von
der performance halbwegs flüssig läuft. für massig feedback bin
ich natürlich immer zu haben.

ihr steuert das "flowfield" indem ihr mit der maus auf der stage
dragged und dann wieder loslasst - mir persönlich gefallen die
streuungen, die dabei entstehen:

ansehen

...und hier zum rumspielen:
Code:
/////////////////////////////////////////////////////
//  flow field matrix
//  author : frank reitberger
//  copyright 2006
/////////////////////////////////////////////////////


// --------------------------------------------------------------------------------------------------


stop();


// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// import flash filter classes
///////////////////////////////////


import flash.display.BitmapData;
import flash.filters.*;
import flash.geom.*;



// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// setup flow field global vars
///////////////////////////////////


var numDots:Number = 200;
var vx:Number = 0;
var vy:Number = 0;
var oldx:Number = _xmouse;
var oldy:Number = _ymouse;
var damp:Number = .95;
var k:Number = .005;
var mouseIsDown:Boolean = false;
_quality = "LOW";



this._lockroot = true;



// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// configure canvas
///////////////////////////////////


function initStage() {
	
	_root.efxStage = new BitmapData(Stage.width, Stage.height, true, 0x00FFFFFF);
	
	_root.createEmptyMovieClip("efxClip", _root.getNextHighestDepth());
	_root["efxClip"].attachBitmap(_root.efxStage, _root.getNextHighestDepth());	

    var i:Number = 0;
    while (i < numDots) {
        var sprite:MovieClip = _root.createEmptyMovieClip("dot" + i, _root.getNextHighestDepth());
        sprite._x = sprite.tx = 135 + Math.random() * 100 - 50;
        sprite._y = sprite.ty = 100 + Math.random() * 100 - 50;
        sprite.vx = 0;
        sprite.vy = 0;
        i++;
    }
	
	paint();
}


// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// paint flow field matrix
///////////////////////////////////


function paint() {
	
    _root.onEnterFrame = function () {
        
		_root.efxStage.colorTransform(_root.efxStage.rectangle, new flash.geom.ColorTransform(0, 1, 1, 1, 1, -1, -1, -10));
        
		vx = _xmouse - oldx;
        vy = _ymouse - oldy;
        oldx = _xmouse;
        oldy = _ymouse;
        
		var i:Number = 0;
        
		while (i < numDots) {
            
			var sprite:MovieClip = _root["dot" + i];
            sprite.lineStyle(1, 0xffffff, 100);
            sprite.moveTo(sprite._x, sprite._y);
            sprite.lineTo(sprite._x + 1, sprite._y + 1);
            _root.efxStage.draw(sprite);
            sprite.clear();

            if (mouseIsDown) {
				var dx:Number = _xmouse - sprite._x;
				var dy:Number = _ymouse - sprite._y;
				var dist:Number = Math.sqrt(dx*dx + dy*dy) * .5;
				dist = Math.max(dist, 10);
				sprite.vx += vx / dist;
				sprite.vy += vy / dist;
            }
			
            sprite.vx = sprite.vx + (sprite.tx - sprite._x) * k;
            sprite.vy = sprite.vy + (sprite.ty - sprite._y) * k;
            sprite._x = sprite._x + sprite.vx;
            sprite._y = sprite._y + sprite.vy;
            sprite.vx = sprite.vx * damp;
            sprite.vy = sprite.vy * damp;
            
			if (sprite._x > 254) {
            	sprite._x = 0;
            }
			
            if (sprite._x < 0) {
                sprite._x = 254;
            }
			
            if (sprite._y > 208) {
                sprite._y = 0;
            }
            
			if (sprite._y < 0) {
                sprite._y = 208;
            }
            i++;
        }
    }
}


// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// add mouse control to stage
///////////////////////////////////


function onMouseDown() {
	mouseIsDown = true;
}

function onMouseUp() {
	mouseIsDown = false;
}


// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// init
///////////////////////////////////

initStage();
viel spaß damit
pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 15-09-2006, 09:53   #2 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
...und hier noch eine Variation mit MotionBlur und Scrolling,
finde ich auch sehr schick:

ansehen


pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 17-09-2006, 14:47   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Oh, sehr schick, vorallem die letzte Variante.
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 17-09-2006, 15:29   #4 (permalink)
Funny flasher
 
Benutzerbild von razz
 
Registriert seit: Nov 2002
Ort: im kanal
Beiträge: 221
sehr schick !

ist bei der letzten variante gewollt das wenn si ein pixel rechts rausgeht er von links wieder reinkommt ?
__________________
---------------------------------------
>>> www.youtube.de/notfall110 <<<
---------------------------------------
razz ist offline   Mit Zitat antworten
Alt 17-09-2006, 16:02   #5 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
@razz
ja ist gewollt, passiert in alle richtungen so - sprich, gehen pixel nach oben
raus, kommen sie unten wieder rein usw...

@razz && Janoscharlipp
danke fürs lob...

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 18-09-2006, 05:28   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Verschoben nach AS1.
  Mit Zitat antworten
Alt 18-09-2006, 06:16   #7 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
@agedoubleju

Wenn das hier so weitergeht mit dem "Verschiebewahn" einiger Moderatoren
poste ich hier auf keinen Fall mehr Stuff...

hmmm...
copie´n´paste ich das ganze doch mal in flash und veröffentliche strikt nur
unter as1 - geht nicht... och...

stellt das ganze doch gleich unter die rubrik "anfänger"!
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 18-09-2006, 06:46   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Komm wieder runter...

Alles, was nicht mit Klassen und OOP zu tun hat, ist AS1.

Wir Mods werden uns auch in Zukunft vorbehalten, alle Beiträge, die im falschen Board gepostet sind, zu verschieben.

Geändert von agedoubleju (18-09-2006 um 06:53 Uhr)
  Mit Zitat antworten
Alt 18-09-2006, 06:50   #9 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
aaahhh verstehe...

dann komm ich jetzt wieder runter und schaue mir die tage
mal genau an, welche posts in as2 nichts mit klassen zu tun
haben und bitte strikt um verschieben...

hmmm...die subline des as2-bereichs lautet:
Zitat:
Hier wird die Objektorientierte Programmierung (OOP) mit ActionScript 2.0 behandelt.
sollte die dann nicht lieber heißen
Zitat:
Hier gehts nur um klassen - alles andere verschieben wir.
noch eine kleine frage:
import und filter etc. sind dann also auch keine klassen...
ach so - die sind ja sozusagen "build in"...
__________________
Blog/Lab Xing

Geändert von pwdVergesser (18-09-2006 um 06:54 Uhr)
pwdVergesser ist offline   Mit Zitat antworten
Alt 18-09-2006, 07:07   #10 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
@agedoubleju
...und nachträglich seine leitsätze verändern gilt nicht!
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 18-09-2006, 08:55   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
bokel hat mich darauf aufmerksam gemacht, dass ja auch Typisierung nur in AS2 funzt...

Zitat:
Hier wird die Objektorientierte Programmierung (OOP) mit ActionScript 2.0 behandelt.
Nun ja, keine OOP ohne Klassen. Oder was wolltest du mir jetzt damit sagen?
  Mit Zitat antworten
Alt 18-09-2006, 09:41   #12 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
ich denke die sache ist jetzt geklärt...

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 21-09-2006, 22:22   #13 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Is ja sehr klein ... von daher geht's mit der Performance (noch) - aber meine Kiste hat ja auch schon 5 Jährchen auf dem Buckel (XP1500+, 256Ram, WinXp)

Hübscher Effekt - besonders der letztere.

--pp
~pyropete~ ist offline   Mit Zitat antworten
Alt 22-09-2006, 08:08   #14 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
@Aerks: Danke danke - so kennt man ihn ja garnicht...

@~pyropete~
Zitat:
Is ja sehr klein ... von daher geht's mit der Performance (noch)
...die Stage selbst könnte man noch größer machen, das würde der
Performance noch nicht schaden, grausam wird es erst, wenn man
mal so richit viele einzelne Pixel zeichnen will, also anstelle von 200
beispielsweise mal 1000 - "Wow" das macht Flash (noch nicht) mit.
derzeit baue ich gerade an einem particle-effect mit 500 partikeln
in as2 - das geht gerade noch - in as3 wird das aber alles anders *freu*

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 22-09-2006, 16:01   #15 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Zitat:
Zitat von pwdVergesser Beitrag anzeigen
wird das aber alles anders *freu*

pwd
Ach ja!? Mch würde mal interessieren, warum - ist das performancemässig _besser_ mit AS3 zu proggen? Oder wo sind die UNterschiede?
Edit: Danke, hab da schon was: ActionScript 3.0 (Linksammlung) ... wie konnte ich nur ...

Ja, 'n Flowfield mit 1000 Partikeln und 800x600 Stagegröße denk ich mal ist recht hart - arme arme CPU

--pp

Geändert von ~pyropete~ (22-09-2006 um 16:03 Uhr)
~pyropete~ 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:36 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele