ActionScript 3.0 :: Additive Blend Killed By CacheAsBitmap
Aug 2, 2010
I'm a seasoned AS3 developer working on a major online project and we've run across a strange visual anomaly which is connected to the movieclip cacheAsBitmap property. When using author-time additive blends (which we use for lighting effects) in a movieclip, turning on the cacheAsBitmap property (without which performance becomes unacceptable in our very detailed art) seems to 'destroy' the additive blend. The art director says that the visual effect produced is as if the blend mode had been set to Normal, which I can confirm--some blends which are yellow turn orange, other 'spotlights' turn from transparent yellow to dark gray.
Everytime a monster dies, I want the monsters killed dynamic text field to increase the number by 1. I gave it a good shot but it feels like im missing something basic, Im fairly new to this still but picking it up quickly. The following code is inside of a movieClip dealing with the monsters. The second block of code is on my main timeline.
I have a mask on a movieClip, and I want the player to be able to move the mouse to uncover the movie clip. How do I make the multiple paths on the mask add together instead of interfere with each other?
var maskObj:MovieClip = new MovieClip(); pScalp.mask = maskObj; //function on user input
Inspired by Andre michelle, I`m building a tone matrix in AS3. I managed to create the matrix and generate the different sounds. They don�t sound that good, but I�m getting there One big problem I have is when more than one dot is set to play, it sounds just horrible. I googled a lot and found the additive synthesis method but don�t have a clue how to apply it to as3.
I wasn't to sure where to post this exactly since I'm not sure if this is a actionscript or some other problem.Ok here it goes. The problem is this if in the embed in the HTML document I put in wmode="transparent" for the flash movie the parameter I am passing to the flash movie never gets passed ... I don't see how wmode can do such a thing but then again this is really my first time working with wmode in general.I tested it numerous times to make sure it really does come down to wmode and it does.Here is the code I currently have I hope there is someone out there that could explain to me why it's doing this.
Update: I have isolated the problem to a single browser which is Firefox. I've tested it with IE8, Safari and Chrome and they all work without any issues except for Firefox.
when cacheAsBitmap is true, do x and y suddenly become ints? im ok with them being drawn this way, but my calculations require x and y to be numbers, because else strange behaviour occurs, which is happening now.
Why does hitTestPoint isn't working on DisplayObjects that has cacheAsBitmap set to true?It does work, but it takes the Whole rectangle of Display object, not respecting wheather or not pixel is transparent or not (transparent pixels return true after hiTestPoint)
Is there any way to add 3D properties like .z and .rotationY without the MovieClip's cacheAsBitmap property being automatically set to true? This automatic cacheAsBitmap to true messes up the visual of my MC (which is using a lot of bitmaps and filters) as soon as I rotate it in 3D. And turning it "off" right after it doesn't seem to work.
Im building a website fully with flash and there is the typical navigation bar to get to the other parts of the site..
each part of the site has a different background photo and I would like to fade out/In each background of the site...
if it would be linear on the time line its obviously just a matter of motion tweens and alpha values.. .but how to do it if one wants to jump say from section 6 to 1 and have background 6 blend with background 1 ?
I guess there is a way to create an if statement in ActionScript ?
I'm working with duplicating a bunch of movie clips, attempting to recreate a waterfall affect. For each drop I apply a overlay filter progmatically, and I want to set the alpha to a value of ten or so. So the script I used to do this was:
is it possible to blend an image over other images in flash? like if I wanted pictures to scroll behind a color gradient... here's what I'm working on: effect done in photoshop, but I what to achieve it in flash)See how the images blend with the colors behind? so when I click the right arrow and the images slide over, I want the overlay to effect them. like the pinkish/red image on the right needs to be greenish when it is displayed on the left side. I could perhaps do it with a gradient in flash (though I'm not sure how), but it would be better if I could use a png file for the color overlay so it matches better
when playing with blending modes I noticed that they affect the background of an html page.To me this says that flash is interpreting the image below and adjusting the pixels in flash. If this were true it would be possible to take screen shots .I tried copying the bitmap of _root and other movieclips but it does not record the html site in behind.
Start a fresh AS2 document using its default publish settings. Draw a circle on the stage and convert it to a movieclip. Name it for example "my_mc". Apply a motion tween to it from left of the stage on frame 1 to right of the stage on frame 20. Test it and the circle moves from left to right.
Now apply this code on frame 1:
code: my_mc.cacheAsBitmap=true;
Test it again: the circle doesn't move; it freezes on its left position of frame 1.
Now change the publish settings from 'flash player 9' to 'flash player 8'. The motion tween now works again
Is this some bug anyone is aware of? Why can't I apply cacheAsBitmap AND a motion tween on a movieclip when using a AS2 document and Flash Player 9?
Just open attached file. While on its flash player 9 setting the circle doesn't move. Change the setting to flash player 8 and it moves again.
I'm loading child swfs in main swf, but as default all loaded swfs has cacheAsBitmap set to true, how to set it to false from main swf? this: loadedSwf.cacheAsBitmap = false; - have no effect.
I'm loading a MovieClip which pixels should be displayed perfectly.Every child of this MovieClip and the MovieClip itself uses only whole integers in position and size.The funny thing is that even if I use "myMovieClip.cacheAsBitmap = true" sometimes it will appear blurry.
CacheAsBitmap stores a raster copy of a movieclip in memory to use. If that movieclip is rotated or scaled, the performance gain is lost as it must re-cache the new movieclip. I assume this also applies to a movieclip that has a constantly repeating internal timeline, even if that movieclip isn't rotating or being scaled. However, do additional frames (that aren't being used) affect this?I have a 'player' movieclip. This movieclip consists of about ten frames, each its own animation. Idle stance, walking, jumping, all the standard stuff. THe movieclip remains stopped on frame 1 (idle stance) for most of the game. Right now the Idle stance is an animation, so to use cacheAsBitmap I need to stop the idle animation. That's fine, but does the additional content in the movieclip interfere with this? If I go from a walking animation back to the idle stance will it re-cache the idle stance for me?
The main reason I ask is that I wasn't able to notice much of a performance difference between either method. Cacheasbitmap on a player sprite with animated idle stance, and Cacheasbitmap on a player sprite with a static idle stance. Both resulted in 39 fps (set to 40) in the flash player. Which is good I suppose, but I don't know how the results will vary for someone with a slow computerThis is an important area of the game because at any given time there could be up to 12 player sprites on the screen (all with filters attached to them). So if one player is moving left/right the other 11 must be re-translated on each frame (since the stage moves too) so if all 11 players are playing their idle animations, with a glow filter, WHILE flash tries to re-cache all of them, that could lead to performance issues (although it hasn't yet for me)I want to give players the option to disable the idle animation, I just hope that it's actually working the way I intend. If cacheasbitmap fails because of any other content inside the movieclip then this would be a useless feature.
I'm trying to achieve an effect similar to the Overlay blend mode between two layers in photoshop in Flash. It sounds simple enough, but BlendMode.OVERLAY produces a distinctly different result than what is seen in photoshop using the same two images. I was wondering if anyone knows a good way to mimic Photoshop's overlay.
Is there a way to control the blend.multiply transparency value?
code:
Code: import flash.display.Sprite; import flash.display.BlendMode; var c:Sprite = new Sprite();
[Code]....
I know its kinda nonsense controlling this value, but what I m trying to achieve is a less "transparency" over the objects, but maintaining the multiply effect.
1.Is it possible to blend music looping from a frame lets say frame 1 to frame 10 and then having it not loop but go into the other frames lets say frame 11 to 21?
2.How can i get it to just either blend or loop, i know looping is possible but i've forgotten how, i haven't used flash since 06'
3.Is it possible to put two songs on one frame without making it sound really bad or jumbled up?
4.how can i put sound effects on a button, lets say you click something or get a coin in the game how can i make it so the 'coin noise' goes on the button?
In the root of my swf i have 2 mc files "menu" and "mask". Mask has inside a vector gradient, while menu is a vertical scroll-able menu, then the mask makes a fading effect on top/bottom. The code:
Inside the menu i have, on first frame, the code for scrolling ( and some functions cause the buttons are duplicated from info on a xml file). The code:
Code: stop(); var yPos = -23;[code].......
The Problem: If i Scroll the buttons all way up, the mask transparency parts looks like to move right (not the whole mask, just the transparency points). If i set no transparency for the mask, this problem doesn't show up.
I'm actually rendering quite a complex 3D scene (complex is a relative term here, doing a similar scene in d3d or opengl would be a breeze, but they're hardware accelerated so you'd expect that). I've built a 3D engine with some basic features including depth sorting, 3D tweening, and mapping between polar and cartesian coordinates. This last bit should be a give away as to what I'm doing - I'm rendering a 2d grid onto a sphere that I then unravel, spin around, squash, expand all so the Client goes ooh and aah. The trouble, is that on anything other than my workstation, rendering crawls. From discussions with other flash programmers and my own investigations, the slow down is most definitely caused by the rendering itself, and not my relatively swift matrix and sorting calculations (they take around 5-14ms tops depending on the complexity of the scene) .
So, my question is, what exactly does happen when I set cacheAsBitmap to true on a display object? I see no texture map distortion so I'm under the impression that flash automatically splits the cached bitmap into polygons for rendering, but how good is flash at doing this? I don't care about texture distortion on objects beyond a certain z value because they're far away, and try as I might I have found no way of setting the equivalent of a display objects 3d render quality. I'm certain that if I could set such a value, I'd at least double the render speed of my scene by only rendering many polys for objects near the camera. Failing this, is there a way to coerce flash into rendering a low poly object? Perhaps by making invisible any graphically complex children?
I'm using cacheAsBitmap to create a gradient mask. The code I set up worked great and all was well but I soon discovered problems when cacheAsBitmap was being nullified when its parent mc was loaded into another mc. I read up on it and from what I understand, since I'm using the MovieClipLoader class, this code should be included in onLoadInit in the root mc (start_mc). Basically this is what I have: start_mc loads main_mc (target) and rollMask1 and roll1 are contained within main_mc. Here's the script for onLoadInit:
is it possible to get access to Flash's internal bitmap cache of an object when CacheAsBitmap is on ?
eg, something like:
var bmd:BitmapData = someDisplayObject.getCachedBitmapData(); if (bmd != null) trace("stoked!"); else trace("bummer. got to bmd.Draw(someDisplayObject) ourselves.");
in order to increase performance of a scrollRect i must cache the vector as a bitmap, otherwise the scrollRect will be simply a less performant mask (info source).however, i can't seem to move an object/scrollRect once i've applied cacheAsBitmap. why?
The cacheAsBitmap property is somewhat similar to what I had to do to get the filters to show up on iPhone GPU mode:But I played around with that property yet filters still don't show up.I even tried to put child objects (with filters) inside a parent object (no filters but cacheAsBitmap = true), no shows.
Is there any way to create text effects like arc in, arc out, blend, bridge over etc as in th powerpoint, photoshop text effects in actionscript.I created arc and circle text.I need for blend and waving text effects.
I am trying to create a custom blend mode much like the blur blend in Windows Vista, where all the of the contents in the windows behind the one on top are blurred. (I hope you understand what I mean.) I would like to accomplish this using a pixel bender effect, naturally. Unfortunately I can't get any kind of blurring (or for that matter, any image distortion at all) to work when I use a pbj file as a blend mode. These kinds of effects work fine as a filter, and seem to work fine in the toolkit as well, but don't seem to work at all in flash as a blend mode. it seems that flash doesn't allow you to sample any points except the current x and y that it is working on when used as a blend.[code]
Layer 1: Linear gradient with transparency on each side.
Layer 2: Graphic symbol of an animation that runs across the entire screen.
The edges of the gradient should mask the animation on either side so it looks like it's fading in from one side while fading out on the other.Is it possible, using just the timeline, to achieve this effect? It's been awhile since I've done timeline animations but I know I've done this before I just can't, for the life of me, figure out the magic combination.I've tried changing the gradient from graphic to movieclip, I've adjusted blend mode, and bitmap caching, yet each time I run the animation the gradient is ignored completely.I read that using masks for gradients are ignored so I changing the layer back to it's original and specify the symbol as movieclip with blend alpha did nothing as well...