ActionScript 3.0 :: Redraw Invalidation With ScrollRect Vs GetBounds?
Mar 24, 2011
I'm having a problem that involves scrollRect and getBounds. In short, getBounds is reporting an old value not accounting for scrollRect changes during that frame. Example:
ActionScript Code:
var shape:Shape = new Shape();
shape.graphics.beginFill(0);
[code].....
View 3 Replies
Similar Posts:
Jan 12, 2011
I am working on a character terminal emulator. Glyphs are 8x8, 1bit raw bitmaps There are 256 glyphs in the palette. A character buffer is a grid of single bytes, referencing the various glyphs in the palette 256 glyph palette.Essentially a character buffer is a big blocky bitmap, only instead of pixels it has glyphs.Rendering the character buffer is a rather quick, self-contained job in theory. The memory required is very low and the execution time is similar to a hardware blit.
It is redundant to have a 'back buffer', i.e. a BitmapData to store a rendering of the character buffer. it's too costly in memory and way overkill for the complexity of what is being rendered.I want to know if it is possible to feed data to the video memory similar to the way it is done with SampleDataEvents. I do not want to store a redundant BitmapData object since some of these character buffers are huge and rarely need to be rendered all at once. They only need to be 'invalidated', i.e. they only need to update small portions at a time as they are 'exposed'.
I have searched high and low and read the manual a million times. The closest thing I could find were the stage.invalidate() and RENDER events, but they don't seem to give me a rectangular area to feed data to. I also tried extending Bitmap, but could not figure out how to override it's default behaviour of reading pixels from a BitmapData.An example of what I'm doing can be found when using GTK's DrawingArea widget and it's 'expose' events, used for very fast rendering.
View 2 Replies
Jun 23, 2010
I am new in flex and recently read about Validation and Invalidation in components.
View 2 Replies
Oct 20, 2011
Create a tab navigator (or viewstack, whatever) and add a couple tabs. On your tab add a show event handler. Inside the event handler call invalidateProperties() and invalidateDisplayList() on one of the children of your tab. Put a break point on the childs commitProperties() and updateDisplayList(). You'll notice that the updateDisplayList() gets called before commitProperties() which results in incorrect behaviour.
I noticed this problem when setting a DataGrid's dataprovider from inside the show handler. Setting the dataProvider causes the grid to invalidate both properties and displayList, updateDisplayList() will get called first, then commitProperties() which will result in the grid not updating the rows. It appears the root of the problem is that the show event gets dispatched from within LayoutManagers validateDisplayList() loop, so invalidating a child object from within the show handler results in its updateDisplayList() getting called immediately.
[Code]....
View 1 Replies
Nov 9, 2009
I have write a simple example that adds a canvas and draw a rectangle with stroke size 20 scale mode none. The problem is that if I call getBounds() first time I will get a correct result but after I call scale(); the getBounds() function will give me a wrong result. It will take in cosideration the stroke but stroke has scalemode to none and on the screen nothing happens but in the result I will have a x value smaller. Can sombody tell me how can I fix this ?
[Code]....
View 1 Replies
Jan 14, 2012
I'm trying to get bounds of an object for more specific testing. but it's not functioning very well.The relevant code here, with some debug outputs:
Code:
private function getCorrectionVector(object:Array, block:Array):Array
{
var ret:Array = new Array();
[code]...
The debug output from running this , is this:
Code:
GCV: Checking objects: 95.7 344.2 0.35,1.35
GCV: Checking objects: 48 48 0,0
[code]...
View 2 Replies
Mar 10, 2009
I'm trying to get the height of the (external) text in textfields to display them vertically on top of each other with a space in between. At the moment I am adding the textfields with predefined heights, so if item1 is 2 lines and item2 is 4 lines then there is a lot of space between item1 and item2
ActionScript Code:
var my_tf = new TextField();
my_tf.text = "Hello";
my_tf.appendText(" world!");// my_tf.text == "Hello world!"
my_tf.x = 100;
addChild(my_tf);
[Code] .....
View 1 Replies
Jul 19, 2011
I've been working on an AS3 project. One of my classes in this project is a collision object that extends MovieClip. It is used to be placed in other movie clips as hitboxes.My problem with the code lies in its hittest function. Occasionally, it causes an infinite loop that crashes the program. Flash tells me the problem lies with the getBounds function, but I don't understand why that is so. Can anyone tell me what might be wrong with it?
Code:
public function HitTest(other:CollisionShape,offsetX:Number = 0,offsetY:Number = 0):Boolean {
[code]........
View 2 Replies
Feb 22, 2010
Is it possible to use scrollRect without the flash.geom.Rectangle class?I know the scrollRect can be used like this:import flash.geom.Rectangle; myMC.scrollRect = new Rectangle(10,10,100,100);I need to make a flash which doesn't extends outside the stage (bacause loading it from another flash will expose anything outside the stage area). Using a mask is an option, but scrollRect seems very interesting because it would be easier and give greater performance.But I can not import the flash.geom.Rectangle class (and it seems overkill to import a class just to set x,y,width and height)How can use scrollRect without the flash.geom.Rectangle class?
View 3 Replies
Aug 11, 2009
I'm trying to move a scrollRect up and down using the mousewheel. that part i've got fine but now i wanted to add easing and am not sure on the maths..
ActionScript Code:
function handleMouseWheel(event:MouseEvent):void {
var rect:Rectangle = this.scrollRect;
var scrollSpeed:int = 10;
[code]....
View 0 Replies
Oct 19, 2009
If we have a Bitamp with more than 16777216 pixels (or one side larger than 8191 px) Flash 10 doesn't show it (Flash 9 and earlier has smaller limits even).One solution to this is to use scrollRect to limit the size displayed.OK, that works.
But Flash 10 has another problem, if we use any 3D property (rotationX, z, etc), flash transforms your MC in bitmap, so we can reach the above limit even when we are not working with bitmaps...A bigger problem is that although our MC could be really small (at least less than 16777216 pixels), when we apply a 3D transform like rotationX, the displayed MC can grows enough to reach the limit. And... we can't use scrollRect with 3D MC. But we have a trick here too, there are two ways to use scrollRect with 3D:
1. Create a 2D parent, then create the 3D displayObject inside of that parent.
2. Set cacheAsBitmap to true for the 2D parent.
3. Create a grandparent container to hold the first two items.
4. Set cacheAsBitmap to true for the grandparent container.
5. Apply scrollRect to the grandparent container.
These methods are really differents, with the second I couldn't use scrollRect to avoid reaching the bitmap limit. I think that's because in the second we apply scrollRect to the parent and 3D to the child, so nothing breakes our child from growing.With the firs method we apply scrollRect to the child, and the 3D property to the parent.
Code:
var p: Sprite = new Sprite();
var c: Sprite = new Sprite();
p.addChild(c);
[code]....
View 0 Replies
Aug 18, 2011
I have a scrolling background that is 1320 x 1000 big. I'm using a sprite as a container where my background canvas is placed inside of it. Additionally I add (via addChild) a score sprite inside of the background sprite (the one that holds the bg canvas so the score appears on top of the bg canvas).The goal is that when I add a score it shall be stuck to the background (even when the scrollrect moves; it shall have a fixed position on the background).The problem is that this doesn't work because when the score appears it moves with the scrollrect and this is not what I want. I already tried it with globalToLocal but had no success yet. Probably because I don't really understand globalToLocal (and vice versa)These are some code excerpts:
Code:
private var backgroundBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0x000000);
private var canvasBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0x000000);
[code].....
View 7 Replies
Jun 5, 2008
I have some actionscript, and it scrolls the scrollRect, but there is a catch. It doesn't completely scroll it. It lets me scroll down until it's halfway and stops. I can still scroll up to the top, but the problem is unerving. I can't find a fix for it.
[Code]...
View 2 Replies
Aug 19, 2010
I have two display objects dispObj1, dispObj2. dispObj2.stage is null. (i.e. it is not added to stage anyhow)What should be the output of dispObj1.getBounds(dispObj2)?Is it well defined, or could it be arbitrary?Once I got x of boundingRectangle close to 6710785, which I guess is a symptom of an integer overflow somewhere.
But other times I got a reasonable value for x,y,width,height.
View 1 Replies
Mar 3, 2011
So I've been building a colour picker, where you click an icon and a tooltip fades in revealing the colour picker. You make a selction and then click an "ok" button to close the tooltip(or mouse away from a couple of seconds and the tooltip closes)...Developing this was really smooth, untill I pushed the Button Component into the colour pickers containing Sprite. The problem seems to lie with getBounds. I use this to draw a background on the Colour Pickers container sprite. Now I have a button in there the first time I open the toolip I get a width and height of 250 - 100. Although the buttons dimensions are 25 - 18. The second time I click the colourPicker its getBounds() properties are correct and all is good.
If I add the Colour Pickers containing sprite to the stage before opening it then it opens with the correct dimension. Although this means the container is on stage. So I tried to just add and remove it in the one step but I get the same result as above.I'm thinking this has something to do with waiting for the button to be added to display list/stage or something but I can't work around it
View 1 Replies
Mar 6, 2009
I am trying to adapt an As2 function to As3. It is perfect collision with 2 rectangles. (also works with rotation ) the code below works very well, but it look like some of the properties doesn't work in As3 ? (like xMin, xMax etc...). Here is what i have in As2.
[Code]...
View 7 Replies
Jan 27, 2009
There are two basic ways of panning a view in Flash. One is to move the display object (and use a mask if necessary). The other is to use scrollrect. Today I noticed a small, but annoying effect of scrollrect. Scrollrect's can't have true Numeric positions-- they are automatically snapped to the nearest pixel.
When moving at very slow speeds, the effect is noticeable. In this example you can switch between two modes of panning, sprite movement with mask and scrollrect:
http://lab.wx3.com/scrolltest/ (view source enabled).
In the default mode, the circles move smoothly.
In scrollrect mode, the circles seem to stutter because the scrollrect is snapping to the nearest pixel.found a way to make a scrollrect move smoothly at slow speeds?
View 3 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
Jun 19, 2009
I am having a problem with ScrollRect. I am unable to upload a file( i don't know why..i am getting upload error msgs). So i have quoted the code.
ActionScript Code: import flash.geom.Rectangle;
var container:MovieClip = container_mc;//container_mc is in timeline(its widht is 600 )
var window:Rectangle = new Rectangle(0, 0 , 400, 100);
container.scrollRect = window;
container.cacheAsBitmap = true;
[Code]...
Currently the leftmost part of movieclip is visible. I want to make right most part of movieclip to be visible at first. What should i do ?
View 2 Replies
Oct 29, 2006
I have two pieces of code, that won't work together.First: this makes a hitTest on an mc to make it run on rollover:
Code:
onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
if (this._currentframe<this._totalframes) {
nextFrame();
[Code]...
Each work seperately, but they won't together. How do I get around this?
View 7 Replies
Jul 1, 2009
I'm having trouble using a scrollRect on an object instance on the timeline that has a motion tween. As soon as I apply the scrollRect to it, the object just stops! I've attached a simple fla that shows what I'm talking about.
Simply comment out this line in the first frame's actions to see the oval move across:
Code:
oval1.scrollRect = window;
The actual application I'm making is using a scrollRect on a custom list control, where each item in the list is a symbol in the library. It works great, except if I try to move my list around using a motion tween (the list still works, but the list doesn't move in the motion tween). As soon as I remove the code to apply the scrollRect, it works but the list fills the screen!
View 1 Replies
Aug 18, 2011
I have a scrolling background that is 1320 x 1000 big. I'm using a sprite as a container where my background canvas is placed inside of it. Additionally I add (via addChild) a score sprite inside of the background sprite (the one that holds the bg canvas so the score appears on top of the bg canvas).
The goal is that when I add a score it shall be stuck to the background (even when the scrollrect moves; it shall have a fixed position on the background).
The problem is that this doesn't work because when the score appears it moves with the scrollrect and this is not what I want. I already tried it with globalToLocal but had no success yet. Probably because I don't really understand globalToLocal (and vice versa).
These are some code excerpts:
Code:
private var backgroundBitmapData:BitmapData = new BitmapData(1320, 1000, false, 0x000000);
private var canvasBitmapData:BitmapData = new BitmapData(1320, 1000, false,
[Code].....
View 1 Replies
May 28, 2008
I'm trying to make a full browser webpage that utilizes the scrollRect type of class to pan around a movieclip that contains other movieclips and so on. The problem I run into is that when the browser window is resized that panning doesn't go with it. So panning to all the edges becomes impossible. I've tried a bunch of different stage resizing techniques but none of them give any good results. Here's the actionscript I'm currently working with:
[Code]....
View 4 Replies
Sep 9, 2010
Adobe help document said, "When a component calls an invalidation method, it signals to Flex that the component must be updated. When multiple components call invalidation methods, Flex coordinates updates so that they all occur together during the next screen update."
[Code]...
View 1 Replies
Aug 2, 2011
The following piece of code works in the timeline:
var ball:Sprite = new Sprite;
addChild(ball);
ball.graphics.beginFill(Math.random()*0xff0000);[code].....
Is the stage accessed differently with the getBounds method in an external file than in the timeline?
View 3 Replies
Mar 11, 2009
hi guys, basically quick rundown is:
1. container1-->bitmap image with bitmapData.
2. container2-->bitmap image with bitmapdata.
3. im using the latest tweenmax
4. have correctly added a 2 seperate scrollrects to container1 and container2 that takes the width and height of the stage.
5. tweenmax is only moving the rectangles.
I get the effect i want, however, it still lags a choppy animation. Anyone know how come?
View 3 Replies
Apr 11, 2007
I'm having a little difficulty getting to grips with the getBounds() Movie Clip function. I assumed the getbounds() method simply got the boundary coordinates for the movie Clip, that one could use to draw a rectangle. This is what I'm trying to do;I'm trying to get a movie clips coordinate bounds, and use the min and max values of x and y to draw rectangle around the object. Simple right? But in my case, I'm getting some unexpected results. I wonder does ther registration point of the object determine the coordinate values? Also are the coordinate values local to the clip instance or global to the stage?
[Code]...
View 5 Replies
Nov 9, 2009
I am building a scene which consists of 1 main mc containing all the elements in the scene. Inside this mc some of the layers are pushed back in Z space to create a parallax effect and on the main timeline the scene mc scrolls in relation to
the mouse position (much like this ) the scene mc is 5953px by 1716px and all the mcs contained inside consist of line drawn vector illustrations imported from illustrator. My problem is that when the scene is scrolling, every so often there is a delay were the scrolling slows down. It eventually catches up with itself causing it to jerk back to its original speed. When I test the movie and turn on redraw regions I notice that flash is having trouble redrawing some of the mcs.
I have tried optimising my mcs, turning cache as bitmap on the static ones and even replacing some of the static ones with bitmap versions but none of these seem to solve the problem. I was wondering if there is a solution to this or any other steps I can take to ease up on the redraw Also I am having a problem with the mcs breaking up as the scene scrolls, is there a way I can easily apply an anti alias to them?
View 1 Replies
Jan 16, 2012
Im pretty sure Im not going about this the right way... but anyways If you move to the left or right, the front triangle is supposed to have its points redrawn to locked positions inside the player, but for some reason it is leaving artifacts and Im sure its some redundancy in my script that I don't see...here is the script executing the redraw...
Actionscript Code:
function reDrawFront() { var temp=frontLockright.localToGlobal(new Point(0,0)); var temp2=frontLockleft.localToGlobal(new Point(0,0));
[code]....
View 2 Replies
Apr 7, 2010
I want my sprite to redraw when the information in my comboBox is changed but I cant figure out how to do it. I've tried a variety of things with no luck so I've deleted my attempts and below is my code how I want it to work with the exception that how it is now just draws the sprite on top of the other one instead of replacing it (or resizing it??).
import fl.data.DataProvider; import fl.events.ComponentEvent;
var items:Array = [ {label:"Select your Waterway"},
{label:"Klamath at Orleans", data:klamath_orleans},
{label:"Scott at Fort Jones", data:scott_fort_jones},
{label:"Redwood Creek", data:"redwood_creek_hwy299"},
[Code] .....
View 1 Replies