Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

Witam,

pytanie może banalne, ale kombinuję z tym już od jakiegoś czasu i nijak mi to nie działa.

Czy cacheAsBitmap działa tylko na bitmapy wstawione do biblioteki Flasha, czy powinien działać również dla grafik wczytywanych z zewnątrz?

Sytuacja jest taka, że zaciągam zdjęcia z zewnątrz, które powinny być maskowane. Kod standardowy:
maska.cacheAsBitmap = true;
foto.cacheAsBitmap = true;
foto.setMask(maska);
No i niestety maskowanie nie działa.

Sugestie mile widziane.
Marcin W.

Marcin W.
TI/IT/VM/HT/PC/XP/AD
/SE/XL/XE/AS/TB/CP/J
S/JV

Temat: [AS2] cacheAsBitmap

kiedy ustawiasz maskę ? nie czasem zanim się zdjęcie załaduje ? Tzn. ustawiasz maskę na onInit, czy w innym zdarzeniu, czy bez zdarzeń ?

Moj sugestia: zamiast robić cacheAsBitmap maski użyj do maskowania BitmapData.draw() i tym maskuj, a klip z którego robiłeś maskę ukryj/usuń.
Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

Maskę ustawiam na początku na kontener, który ma zawierać załadowany obrazek.
Co do usunięcia maski, jeżeli go usunę, to jak uzyskam efekt gradientowej maski?

[EDIT] -> Dodatkowe info
Zmieniłem ustawianie maski na zdarzenie onLoadInit() i nadal niestety widzę grafikę maski zamiast maskowania obiektu.Michał Żmich edytował(a) ten post dnia 06.11.09 o godzinie 19:49
Marcin W.

Marcin W.
TI/IT/VM/HT/PC/XP/AD
/SE/XL/XE/AS/TB/CP/J
S/JV

Temat: [AS2] cacheAsBitmap

czyli chodzi Ci o taki efekt: http://www.simpleflashblog.com/2007/09/19/flash-8-grad...

Ładuj obrazek nie do klipu maskowanego, ale do klipu wewnątrz tego klipu:

maskMC.cacheAsBitmap = true;
containerMC.cacheAsBitmap = true;
containerMC.setMask(maskMC);
vat pictureMC:MovieClip = containerMC.createEmptyMovieClip("i am the clip of the picture", containerMC.getNextHighestDepth());
pictureMC.loadMovie("picture.jpg");
Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

O taki efekt mi chodziło na zwykłym slideshow.
Niestety to nie działa :( albo coś tak mieszam, że kicha jakaś powstała. Maska gradientowa jak nie działała tak nie działa na dynamicznie ładowanym obrazku.
Adrian Z.

Adrian Z. flash animator/
flash developer

Temat: [AS2] cacheAsBitmap

spróbuj z tym kodem, u mnie działa to bez problemu
jeśli jednak dalej u Ciebie nie gra to znaczy że mieszasz gdzieś indziej

maska.cacheAsBitmap = true;

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener(this);
mcLoader.loadClip("rysunek.jpg", foto);

function onLoadInit(mc:MovieClip) {
foto.cacheAsBitmap = true;
foto.setMask(maska);
}
Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

Dzięki za pomoc. Kod mam dokładnie taki sam i na tych samych zdarzeniach, jednak nie bardzo mu się chce zadziałać. :(
Marcin W.

Marcin W.
TI/IT/VM/HT/PC/XP/AD
/SE/XL/XE/AS/TB/CP/J
S/JV

Temat: [AS2] cacheAsBitmap

nie żebym wątpił... ale na jakiej wersji flasha pracujesz ? :D
Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

CS3

Sytuacja jest dziwna, ponieważ efekt maskowania na obrazkach zaimportowanych do biblioteki działa bez zarzutu. Problem jest kiedy zaciągam obrazki z zewnątrz.
Marcin W.

Marcin W.
TI/IT/VM/HT/PC/XP/AD
/SE/XL/XE/AS/TB/CP/J
S/JV

Temat: [AS2] cacheAsBitmap

...w opcjach eksportu zobacz do jakiej wersji flasha eksportujesz.

No i może pokaż cały kod, którego używasz do ładowania i nakładania maski.
Artur Kalinowski

Artur Kalinowski motion designer /
flash - ae animator
/ web designer

Temat: [AS2] cacheAsBitmap

jesli uzywasz MOvieClipLoader i maskujesz na onLoadComplete to zmien na onLoadInit ale najelpiej, jak mowi MaW, pokaz kod, bo tak to wruzenie z fusow jest

czasami jest problem z maskowaniem pod fp9 ale to raczej wsytuacji gdy masz mc z bitmapa na timelinie
Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

Zmieniam na Init, nie na Complete
Poniżej kod:

var loadListener:Object = new Object();
//
loadListener.onLoadInit = function(target_mc:MovieClip):Void {
var foto:MovieClip = new MovieClip();
foto = foto1.getDepth()<foto2.getDepth() ? foto1 : foto2;
foto._alpha = 100;
foto.kontener.cacheAsBitmap();
foto.maska.cacheAsBitmap();
foto.kontener.setMask(foto.maska);
foto1.swapDepths(foto2);
foto.maska.gotoAndPlay("start");
czekaj = setInterval(ladujFoto, czas*1000);
};
//
var fotoLoader:MovieClipLoader = new MovieClipLoader();
fotoLoader.addListener(loadListener);
Artur Kalinowski

Artur Kalinowski motion designer /
flash - ae animator
/ web designer

Temat: [AS2] cacheAsBitmap

tu jest blad:
foto.kontener.cacheAsBitmap();
foto.maska.cacheAsBitmap();

powinno byc:
foto.kontener.cacheAsBitmap=true;
foto.maska.cacheAsBitmap=true;
Michał Żmich

Michał Żmich Specjalista ds
reklamy

Temat: [AS2] cacheAsBitmap

No i o to chodziło, działa pięknie :D
Dzięki wszystkim.

Temat: [AS2] cacheAsBitmap

Podepnę się pod temat bo podobny :)

ładuję obrazki z biblioteki na scenę.
Flash sam się przeładowuje co jakiś czas... w jaki sposób zapobiec temu aby obrazki pojawiały się wcześniej przed animacją??

tzn powinno być: Animacja -> obrazki tak jest za pierwszym uruchomieniem później widocznie trzyma obrazki w pamięci i jest obrazki -> animacja;

W jaki sposób wyczyścić czy cokolwiek zrobić :)

Następna dyskusja:

[Flash CS3, AS2] problem z ...




Wyślij zaproszenie do