ActionScript 3.0 :: Set CacheAsBitmap To True On A Display Object?
Mar 15, 2010
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?
View 6 Replies
Similar Posts:
Jan 6, 2007
what I am trying to do is to load HTML content from an XML file and put it in a TextField object I create dynamically. After all this is done, clicking on a button fades the TextField object out and another TextField with new content appears.I've got the whole process working fine, including the fading. And to get the fading to work, I've actually had to set my dynamic TextField objects' embedFonts property to TRUE.Now here's the hiccup:
When embedFonts is FALSE, Flash displays the TextField's HTML content properly. The text flows properly and looks as expected. The only downside is that the fade effect doesn't work.When embedFonts is TRUE, the fade effects works perfectly, but Flash displays the TextField's HTML content with a bunch of extra spaces between some of the letters. The line height seems to be different also.The odd thing is that when I debug the code to look at the styles, in both instances of embedFonts set to TRUE or FALSE, the styles are exactly the same. But Flash is rendering the HTML with different kerning and line height in each of the scenarios.
View 2 Replies
Jan 31, 2010
If I create a rectangle with 100px width and 100px height and then rotate it, the size of the element's "box" will have increased.With 45 rotation, the size becomes about 143x143 (from 100x100).Doing sometimes like cos(angleRad) * currentWidth seems to work for 45 rotation, but for other bigger angles it doesn't.At the moment I am doing this:
var currentRotation = object.rotation;
object.rotation = 0;
var normalizedWidth = object.width;
[code].....
View 4 Replies
Sep 4, 2009
about.buttonMode = true;
about.useHandCursor = true;
I have this on a MC I use for a button - and it works but only on HALF of the object - how can I make so it works on the whole object itself?
View 1 Replies
Nov 29, 2009
I have six objects which are on the stage when my game loads up. I have stored them in an array in my Document class. Occassionaly I run through this array and check if something has hit these objects and remove them if so. i don't actually remove them from the array though. I'm finding though that even after these objects have been removed from the stage, the hittestpoint still returns true when something crosses the area where these objects once where?! Doesn't the object have to be there for hitTestPoint to return true?
View 2 Replies
Jun 11, 2004
I know how to do this in other codes, but..if (condition1=true) AND (condition2=true) then... How do you do this in AS?
View 5 Replies
Dec 8, 2009
I've been spending some of my spare time working a set of collections for ActionScript 3 but I've hit a pretty serious roadblock for the way ActionScript 3 handles equality checks inside Dictionary Objects. When you compare a key in a dictionary, ActionScript uses the === operator to perform the comparison, this has a bit of a nasty side effect whereby only references to the same instance will resolve true and not objects of equality. Here's what I mean:
[Code]...
View 4 Replies
Mar 9, 2010
In my flash application, I've got multiple windows which use Scrollpanes. The scrollDrag property is set to true on these because I want that functionality. If I close (within my application) one of these 'windows' and open another, I seem to get a whole lot of this error showing up in my logs:TypeError: Error #1009: Cannot access a property or method of a null object reference.at fl.containers::ScrollPane/endDrag()Sometimes I get thousands of these, which I'm guessing is probably slowing my app down a bit, but otherwise is not causing a problem. Looking through the adobe code for scrollpane, endDrag is really simple:
protected function endDrag(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_MOVE, doDrag);
}
The stage var is the only thing that could be null here.The only thing I can think to do is set scrollDrag=false before the window in my application closes so that nothing is listening for the event
View 1 Replies
Jan 10, 2010
I have an intropage with two mc buttons that resides in another mc. They are for an English and a Dutch part. So when I click on either one of them, they go to the "Home" label (frame 2). But now at the same time when the main timeline goes to "Home" I want the movieclip container that contains 6 buttons (The English or Dutch ones) to be visible false or true when I click on one or the other. As a part of the code will show some of you there must be an 1119 error that I can't figure out. It has to do with the FrameLabel that is supposedly undifined. [code]If i remove the if statement and just put the visible statement that also gives an error.But maybe the conflict could be that btnTxtFrameN_mc nor btnTxtFrameE_mc exist on the first frame where I wrote the code and only appear as from label "Home" (second frame)
View 9 Replies
Jan 24, 2009
I have a swf within a html page. There is a function that opens an html page when an object gets to a certain x position. However, when the object gets to that point the new html page (in _self) opens over and over again and get stuck in a loop. Any way to escape this loop and what would be the best way to trigger this new html page to open when the x position of the object is true?
View 1 Replies
Mar 6, 2008
Is there any way to test if a display object has been added to the display list?
View 9 Replies
Jan 22, 2012
can I resize a display object (container) without its contents (children) are resized?
For example, in the following code when I resize the green square, red is also resized. I wanted to resize only the green.
ActionScript Code:
import flash.display.Sprite;
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xff0000);
[Code].....
View 3 Replies
Mar 4, 2011
What's a simple way to detect if a display object is currently on the display list?
View 1 Replies
Aug 14, 2009
Can you make one Bitmap Object (I'm using an external jpg) or something similar, and then display it many times simultaneously without creating a separate object each time?
Also, would they be easily removed or hidden?
I've got a little checkmark jpg graphic loaded here, but I'm not sure how to go about using it in many places at once.. I can only display it in the one place at any one time...
I'm thinking there might be a way to load the picture once, then use its bitmapData elsewhere in new display objects somehow, without needing to reload the image over and over?
View 3 Replies
Feb 9, 2009
It's my understanding that a display object cannot be in the display list more that once.So if I add something to the stage shouldn't a second addition of the same object replace the first? for instance:
[code]...
there should now only be one "myDisplayObject" on the stage.
View 3 Replies
Jun 27, 2011
How can i cast a object to another type? in AS3 i tried putting (objectType) infront of the variable but it doesnt work, below i have added objects of fishes into the child, and i am getting the fishes back out when mouse down is triggered, and then calling the fishes what to do. however i cant call the method of the custom class fish because it is a displayobject.[code]...
View 1 Replies
Mar 7, 2009
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.
View 6 Replies
Sep 19, 2011
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)
View 3 Replies
May 30, 2011
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.
View 2 Replies
Aug 19, 2009
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.
View 6 Replies
Jul 30, 2010
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.
View 1 Replies
Aug 6, 2011
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.
View 1 Replies
Jan 4, 2008
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.
View 1 Replies
Mar 3, 2010
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:
Code:
stop();
_root.menu_mask.cacheAsBitmap = true;
_root.menu.cacheAsBitmap = true;
_root.menu.setMask (menu_mask);
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.
View 1 Replies
Mar 8, 2011
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:
[Code]...
View 50 Replies
Feb 16, 2010
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.");
View 1 Replies
Aug 30, 2011
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?
package
{
//Imports
import flash.display.Screen;
import flash.display.Sprite;
[code].....
View 1 Replies
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.
View 5 Replies
Dec 25, 2011
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.
View 1 Replies
Jun 3, 2009
I have a very complex vector symbol on the Stage - background_mc. I have set background_mc.cacheAsBitmap = true.This turns background to bitmap and makes Stage repaint fast.Every frame the background light changes.I use the following code to alter the light.
(new Color(background_mc)).setTransform(light);
And here is the problem.The code works very slow.I guess because the light is applied to the contents of the background_mc.And then a new cached bitmap is resterized once again.The same code over BitmapData of the same size works much faster!Is there a way to tell Flash to apply color-transformation to the cached bitmap, instead of underlying vector symbols?
Note, that background_mc is scaled when Stage is resized.This is not so fast, but it's good, because the picture quality preserved.If I convert background_mc to BitmapData, bitmap would be scaled.
View 1 Replies