• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-04-2007, 11:49   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 106
bitmap-Bild -> Pixelfelder tauschen

Hallo zusammen!

Habt Ihr eine Ahnung, ob ich ein bitap Bild (1024/768) auf der Bühne per script aniieren kann... dh. ich möchte, dass sich Bereiche von (sagen wir) 8x8 Pixeln per Script gegenseitig (und per Zufall) vertauschen.

Derart, dass das Bild suksessive "durcheinandergewirbelt", auseinandergenomen wird.

Geht das? Und ...mmh... wie?

Grüße Euch,
der Holozän
holozän ist offline   Mit Zitat antworten
Alt 28-04-2007, 14:07   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.888
Hallo,

da ich mich bisher sowieso sehr wenig mit der BitmapData-Klasse auseinandergesetzt habe, dachte ich mir, ich spiele damit mal etwas rum. Rausgekommen ist dann Folgendes:
PHP-Code:
import flash.display.BitmapData;
import mx.transitions.Tween;
import mx.transitions.easing.*;
//
this.createEmptyMovieClip("bild"1);
var 
ml = {};
ml.onLoadInit = function() {
    
startIt();
};
var 
mcl = new MovieClipLoader();
mcl.addListener(ml);
mcl.loadClip("http://nemiroff2005.stsland.ru/famous/angelina_jolie.jpg"bild);
//
function startIt() {
    
bd = new BitmapData(1024768false);
    var 
m1 this.createEmptyMovieClip("m1"2);
    
m1.attachBitmap(bd1);
    
bd.draw(bild);
    
removeMovieClip(bild);
    
moveSquares();
}
//
function moveSquares() {
    for (var 
0c<2c++) {
        var 
bd1 = new BitmapData(88false);
        var 
mc this.createEmptyMovieClip("square"+cc+3);
        
mc.attachBitmap(bd11);
        
mc._x random(1016/8)*8;
        
mc._y random(760/8)*8;
        
mc.arr = [];
        for (var 
0j<64j++) {
            var 
bd.getPixel(mc._x+Math.floor(j/8), mc._y+(j%8));
            
bd.setPixel(mc._x+Math.floor(j/8), mc._y+(j%8), 0xffffff);
            
bd1.setPixel(Math.floor(j/8), j%8p);
            
mc.arr.push(p);
        }
    }
    var 
nt = new Tween(mc"_x"Strong.easeOutmc._xsquare0._x1true);
    new 
Tween(mc"_y"Strong.easeOutmc._ysquare0._y1true);
    var 
nt1 = new Tween(square0"_x"Strong.easeOutsquare0._xmc._x1true);
    new 
Tween(square0"_y"Strong.easeOutsquare0._ymc._y1true);
    
nt.onMotionFinished nt1.onMotionFinished=function () {
        
this.obj._x Math.round(this.obj._x);
        
this.obj._y Math.round(this.obj._y);
        for (var 
0j<64j++) {
            
bd.setPixel(this.obj._x+Math.floor(j/8), this.obj._y+(j%8), this.obj.arr[j]);
        }
        if (
this.obj._name == "square0") {
            
moveSquares();
        }
    };

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 28-04-2007, 15:29   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 106
Smile noch 2 Fragen...

Hallo Frage!

Das sieht klasse aus! Du hast so ziemlich den Punkt getroffen!

Jetzt aber noch zwei Fragen von mir... :-)

… in dem Moment wo sich zwei Elemente vertauschen blitzt der weiße Hintergrund auf... wie könnte man das vermeiden???
Z.B. dass dieser Hintergrund "schwarz" ist (unauffälliger)
Z.B. dass bis zum Moment wo das neue Element sich über die "Leerstelle" schiebt, dort eine Kopie des ursprünglichen Bildes verbleibt.

Und: wo/wie im script könnte ich auf die Tauschgeschwindigkeit Einfluss nehmen? Es geht a bisserl flott alles???

Beste Grüße + Danke schonmal!!!
Holozän
holozän ist offline   Mit Zitat antworten
Alt 28-04-2007, 15:32   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.888
PHP-Code:
bd.setPixel(mc._x+Math.floor(j/8), mc._y+(j%8), 0xffffff); 
Die Zeile löscht den Bereich des Bildes bzw. macht ihn weiß. Kannst du auch rauschmeißen (dann bleibt das Bild) oder nur "0" für schwarz setzen.
Die Geschwindigkeit ist hier jeweils die letzte 1 vor dem true und steht für eine Sekunde:
PHP-Code:
var nt = new Tween(mc"_x"Strong.easeOutmc._xsquare0._x1true); 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 14-11-2009, 17:48   #5 (permalink)
Neuer User
 
Registriert seit: Feb 2005
Beiträge: 106
Bitmap - Klasse

Hallo zusammen,

hier in dem script funktioniert alles reibungslos.
Doch gerne würde ich die Tauschgeschwindigkeit vervielfachen.
Also ganz ganz schnell einstellen.

Die Frage ist, welche Einstellungen ich hier vornehmen muss, um
dies beispielsweise auf 1/10 - 1/100 Sekunde zu steigern???

var nt = new Tween(mc, "_x", Strong.easeOut, mc._x, square0._x, 1, true);


Grüße an Euch,
Holozän
holozän 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:49 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele