PDA

Volledige versie bekijken : Blur masker op gedeelte van Sprite


LuchtJon
%Europe/Berlin %500 %2009, 12:01
Hallo,

Ik vroeg me af of ik een gedeelte van een Sprite ook kan maskeren met een blur zonder dat de hele sprite geblurd wordt. Ik zal me even nader verklaren:

Ik werk aan een project waarbij ik een fotogalerij heb gemaakt die uit 5 thumbnails op een rij bestaat en een X aantal rijen lang is waarbij de canvasgrootte constant blijft (1600*960).
Ik heb een grid van thumbnails gemaakt in een aparte klasse, en die grid heb ik op de stage aan een sprite toegevoegd. Vervolgens kan ik de sprite omlaag en omhoog verplaatsen om te "scrollen" door de rijen.

Wanneer ik op een plaatje klik wil ik graag een blur toepassen waarna er op de voorgrond een vergroting van de foto verschijnt.
Het probleem is alleen dat bij een vrij grote hoeveelheid thumbnails (50 of meer) deze allemaal geblurd worden als ik op een plaatje klik, en dat gaat logischerwijs erg traag.

Nu zou ik het liefst zien dat alleen het gedeelte van de sprite dat zichtbaar is op de stage geblurd wordt. Ik vroeg me af of er ook een manier is om dit te doen zonder dat ik voor iedere thumbnail moet bepalen of deze op de stage staat (of iets dergelijks) maar gewoon door een soort masker er overheen te leggen.

Ik heb een plaatje bijgevoegd van wat ik bedoel

Alvast bedankt.

WickedMind
%Europe/Berlin %842 %2009, 20:13
BitmapData maken van het gedeelte was zichtbaar is, blurren en dat op displayList zetten.

Maak daarvoor een BitmapData aan ter grootte van je canvas.
Teken daar het zichtbare gedeelte in van je sprite (met Rectangle Class kun je dat aangeven in method BitmapData.draw()).
Maak bitmap aan en voeg je data er aan toe en zet dat op de display list (na blurren).

Ik vermoed dat je niet eens het zichtbare gedeelte moet kopiëren in je bitmapdata voor al een behoorlijke performance boost.

LuchtJon
%Europe/Berlin %883 %2009, 21:11
Bedankt, daar ga ik nog even mee aan de slag.

Ik heb nog een issue waardoor m'n flash nogal traag wordt, en dat zit zo:
Ik heb een object ThumbnailGrid met een X aantal Thumbnail objecten zoals eerder al uitgelegd.

In Thumbnailgrid hang ik aan elk plaatje een mouse-over listener, een mouse-out listener en een mouse-down listener. de eerste twee zorgen voor een lichte vergroting en verkleining van het plaatje zodat het plaatje waar de muis over zweeft een beetje hoger komt te liggen.
De mouse-down listener doet een dispatchEvent met een eigengemaakt GridEvent waarin ik de URL van de foto die geladen moet worden kan doorgeven.
Op mijn stage heb ik een listener gemaakt die de functie loadPhoto uitvoert als de klasse ThumbnailGrid een event dispatcht. Nu is het zo dat als ik dit allemaal probeer, de hele grid even lijkt te haperen nadat ik op een plaatje heb geklikt. Ik heb een beetje getracet en volgens mij komt dat door het dispatchen van de Event, al zou ik niet zo goed weten hoe.

Zijn er ook ideeen hierover, moet ik soms even de code plaatsen?

LuchtJon
%Europe/Berlin %685 %2009, 16:27
@WickedMind

Ik heb op internet gezocht en in de online docs van Flash gekeken maar ik kon nergens een methode vinden om een gedeelte van een Sprite in een bitmap te kopieren.
Zou je misschien kunnen zeggen welke methode ik hiervoor nodig heb?

Alvast bedankt.