Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-10-2010, 17:22   #1 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Registrierungspunkt-Workaround mit BitmapData?!

Hallo Forum!

Ich moechte ein BitmapData(-Objekt?) mit einer Matrix dynamisch skalieren.

Mein Problem ist, dass ich nicht "nach oben" skalieren will. Ich moechte meinen eigenen Registrierungspunkt setzen, weiss aber nicht, wie ich das mit BitmapData machen kann.
Der Container-Workaround funktioniert ja hier wohl nicht, da ich die BitmapData selbst skalieren muss.

Hat das schonmal jemand gemacht oder eine Idee?

Viele Gruesse,
T
twietee ist offline   Mit Zitat antworten
Alt 11-10-2010, 17:36   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
es kann keine bits an negativen koordinaten geben. du musst das ganze bewegen.
z.b. packe das in ein movieclip rein.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 11-10-2010, 17:53   #3 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Danke fuer die Antwort!

Zitat:
Zitat von hgseib Beitrag anzeigen
es kann keine bits an negativen koordinaten geben. du musst das ganze bewegen.
... das verstehe ich nicht! Gerade so funktioniert doch aber der Standard-Registrierungspunkt-Workaround!?
Dass ich das Ganze bewegen muss, weiss ich auch, wie allerdings, weiss ich nicht.

Zitat:
Zitat von hgseib Beitrag anzeigen
z.b. packe das in ein movieclip rein.
... das in einen MC packen funktioniert doch gerade nicht, weil ich die BitmapData direkt skalieren muss und nicht ueber einen Container skalieren kann?!

Ich glaube ich verstehe einfach nicht, was du meinst.

Ich hab auch schon an eine Translatematrix gedacht, aber damit krieg ich ja nur eine Verschiebung hin und nicht auch noch die Ausgleichsverschiebung. Hmmm.

edit: was ich erreichen moechte, ist, dass das Bild auf der Stelle skaliert wird und nicht nach oben wandert. Ich muss also den y-Wert des Registrierungspunktes in die Mitte verschieben.

T

Geändert von twietee (11-10-2010 um 17:57 Uhr)
twietee ist offline   Mit Zitat antworten
Alt 11-10-2010, 18:10   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Dann mußt Du mit den Parametern tx und ty entsprechend gegensteuern:
PHP-Code:
var bmpData:BitmapData// Dein BitmapData
var scale:Number .5;

var 
tempBmpData:BitmapData bmpData.clone();
bmpData.fillRect(bmpData.rectangle0);

var 
offset:Number = (scale)/2;
var 
tx:Number bmpData.width offset;
var 
ty:Number bmpData.height offset;

bmpData.draw(tempBmpData, new Matrix(scale00scaletxty); 
Zur Erläuterung:
1 - scale errechnet um wieviel das Endbild größer bzw. kleiner als das jetzige ist.
Diesen Gesamt-offset verteilt man dann mit /2 gleichmäßig in beide Richtungen.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (11-10-2010 um 18:35 Uhr)
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 11-10-2010, 21:23   #5 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Dann mußt Du mit den Parametern tx und ty entsprechend gegensteuern:
PHP-Code:
var bmpData:BitmapData// Dein BitmapData
...
bmpData.draw(tempBmpData, new Matrix(scale00scaletxty); 
Zur Erläuterung:
1 - scale errechnet um wieviel das Endbild größer bzw. kleiner als das jetzige ist.
Diesen Gesamt-offset verteilt man dann mit /2 gleichmäßig in beide Richtungen.
Ok, ich glaube das erfuellt seinen Zweck. Danke Dir.

Leider sind jetzt die "raufgeklebten" Objekte bei manchen Skalierungsstufen zerstueckelt. Kann es sein, dass das Skalieren die Displacementmap zerstoert (habe schon .draw (..., true) probiert, gleiches Ergebnis)? Gibt es etwas, das ich dagegen tun kann?

T
twietee ist offline   Mit Zitat antworten
Alt 11-10-2010, 22:24   #6 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
Zitat:
Zitat von twietee Beitrag anzeigen
Kann es sein, dass das Skalieren die Displacementmap zerstoert
nein, (kaum) durch das skalieren werden Pixel interpoliert, sollte der Displacement-map aber nicht soviel ausmachen.

Zitat:
Zitat von twietee Beitrag anzeigen
Leider sind jetzt die "raufgeklebten" Objekte bei manchen Skalierungsstufen zerstueckelt.
was heisst "raufgeklebte Objekte"? objekte, die über einem Bitmap mit der skalierten BitmapData?


was genau willst du eigentlich machen? es scheint es mir, als ob hier etwas im Konzept nicht stimmt.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 12-10-2010, 00:15   #7 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Zitat:
Zitat von thomas_E Beitrag anzeigen
was heisst "raufgeklebte Objekte"? objekte, die über einem Bitmap mit der skalierten BitmapData?

was genau willst du eigentlich machen? es scheint es mir, als ob hier etwas im Konzept nicht stimmt.
Hi Thomas,

ich habe ein ruendliches Objekt, auf das kleine Sticker aufgeklebt werden koennen und die perspektivisch korrekt dargestellt werden sollen (DisplacementMap als BitmapData, DisplacementMapFilter auf jedem Sticker).
Da das Objekt y-skaliert werden kann, muss ich auch die DisplacementMap y-skalieren. Dabei, d.h. bei einigen Zwischenstufen (insgesamt 10) kommt es aber zu argen Fehldarstellungen bei den Stickern.

PHP-Code:
var dm_ldr:MovieClipLoader = new MovieClipLoader ();
var 
dm_ldr_lst:Object = {scope:thisonLoadInit:function (mc) {
        
// in "mc" ist die DisplacementMap als Bild
        
mc._visible false;    
        
this.scope.mapBitmap = new BitmapData (mc._widthmc._heighttrue0xffffffff);
        
// BitmapData wird unter Verwendung einer Matrix gezeichnet, sollte smooth sein
        
this.scope.mapBitmap.draw(mc, new Matrix (100, (this.scope.scaling 100), 0, (- (this.scope.scaling 100)) * mc._height), true);
        for (var 
0this.scope.stn_array.lengthi++) {
            
// Offset-Punkt fuer Sticker 
            
var p_x:Number this.scope["stn_cnt_" st_count i]._x * -1;
            var 
p_y:Number this.scope["stn_cnt_" st_count i]._y * -1;
            
// Filter wird erstellt
            
var filter:DisplacementMapFilter = new DisplacementMapFilter (this.scope.mapBitmap, new Point (p_xp_y), 121212"color"00x000000);
            
// Filter wird auf Sticker angewendet
            
this.scope["stn_cnt_" st_count i].filters = [filter];
        }
    }
}} 
(Konzept-) Fehler?

Danke & Gruss,
T
twietee ist offline   Mit Zitat antworten
Alt 12-10-2010, 14:03   #8 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
... das Problem besteht weiterhin, ich habe noch keine Loesung.

Ich wuerde mich wirklich freuen, wenn jemand einen Tipp geben koennte ...

Gruss,
T

Geändert von twietee (12-10-2010 um 14:30 Uhr)
twietee ist offline   Mit Zitat antworten
Alt 13-10-2010, 20:33   #9 (permalink)
Alter User
 
Registriert seit: Apr 2010
Ort: Deutschland
Beiträge: 128
Hallo nochmal,

hat denn keiner eine Idee?

Gruss,
T
twietee 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
BitmapData.copyPixels(), BitmapData.draw() & Graphics.beginBitmapFill Kason Bridges ActionScript 3 4 22-10-2009 18:08
registrierungspunkt burn4ever Flash Einsteiger 1 14-12-2007 10:25
Registrierungspunkt auf 0/0 zerlettino Flash MX 2004 8 12-12-2005 11:24
Registrierungspunkt mstyle Flash MX 5 14-01-2004 20:24
Registrierungspunkt? PIXIX ActionScript 1 5 08-12-2003 09:21


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele