ByteArray to the Sprite
Hi, I have problems with having my bytearray (which is an image) in a sprite. This is my attempt to date:
var imgB:BitmapData = new BitmapData(271, 278, true, 0xff0000); imgB.setPixels(new Rectangle(0,0,271,278), $imgData); $image.graphics.beginBitmapFill(imgB,new Matrix(), false, true);
My byteArray is $imgData and the sprite I want to draw $image. When I run the above code I get EOF error:
Error: Error #2030: End of file was encountered. at flash.display::BitmapData/setPixels()
Any thoughts? Thank you
I'm not sure of what you're trying to do here... but you can not use the binary data that you loaded with a URLLoader as bitmapData, if she was responsible for a png or jpeg for example. These file formats must be decoded in bitmapData - using the native support for this drive seems preferable.
He does not seem to be a delay of frame with the loadBytes method and you cannot intercept using the FULL event, as you say.
I got it works like this (maybe there is a better way than using the enterFrame, but I just did this quickly to check)
var $image:Sprite=new Sprite(); addChild($image); var myBitmapData:BitmapData; var imageLoader:Loader = new Loader() var dataLoader:URLLoader=new URLLoader(); dataLoader.dataFormat = flash.net.URLLoaderDataFormat.BINARY dataLoader.addEventListener(Event.COMPLETE,completeHandler) function loadImage(url:String):void{ var req:URLRequest=new URLRequest(url); dataLoader.load(req) } function completeHandler(e:Event):void{ //use enterFrame to check for loaded content imageLoader.addEventListener(Event.ENTER_FRAME,imageDecodeHandler); imageLoader.loadBytes(e.currentTarget.data); } function imageDecodeHandler(e:Event):void{ if (imageLoader.content) { trace('loaded') imageLoader.removeEventListener(Event.ENTER_FRAME,imageDecodeHandler); myBitmapData = Bitmap(imageLoader.content).bitmapData; //imageLoader.content width and height available now as well as myBitmapdata.rect etc $image.graphics.beginBitmapFill(myBitmapData,null,true,true); $image.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight); $image.graphics.endFill() } else { trace('not yet loaded') } } //substitute a local image file here: loadImage("46.png")
Tags: Adobe Animate
Similar Questions
-
The label on the top of the Sprite event management
Hi everyone, it's more of a general question of Actionscript, but Google does offer all the answers.
So I made a custom component, element that extends the Sprite class. I draw things on the graphics in this class and then I add a Label to display text.
In another class, where I create instances of the previous class, I add an EventListener for MouseEvent.Click. In this function, there is this line:
selectedElement = Element(event.target);
In short, I want the variable selectedElement to contain the element on which click it. But I ran into problems, event.target is not always an instance of my class. If I click where the label is, event.target is a Label.
How can I organize if click anywhere on my element, in particular on the label, it's the element of class that dispatches an event and not on its label. I think I need to intercept events of labels in some way, but no idea how to do this.
Thank you in advance.
Too bad, in the event class stopPropagation method has been what I was looking for.
-
Wait for the sprite press / clicked
Hi, I am trying to display graphics when the user touches the sprite first which I reproduce, then another graphic when the user releases the sprite (raises their finger). I don't know how to go on this subject! Please help me!
Thanks in advance
On the Sprite that you draw in, add an event listener for mouse down and mouse upwards. This will work only on drawn graphs and not areas of the sprite which pulled anything in.
private var sprite: Sprite = new Sprite();
//...
addChild (sprite);
make the drawing
sprite.addEventListener (MouseEvent.MOUSE_DOWN, MouseDown);
//...
private function MouseDown (event: MouseEvent): void
{
this.sprite.addEventListener (MouseEvent.MOUSE_UP, MouseUp);
do something
}
private void MouseUp (event: MouseEvent): void
{
this.sprite.removeEventListener (MouseEvent.MOUSE_UP, MouseUp);
do something
}
-
reset the position of the sprites
Hello world
I'm unable to a simple matching game.
Basically, I want to create a code that will ensure that each sprite is at a location given at the beginning of each game. Currently these sprites are not in their correct location when the game is re-played.
The following code displays the error "Script error: property not found. Can someone tell me what is wrong with him?
on prepareFrame me
-put the sprites where they are supposed to be
resetpOrigLoc()
end
on resetpOrigLoc
Member("Kngwarria").loc = point (73, 111)
Member("Kamaarra").loc = point (151, 69)
Member("Ngala").loc = point (220,24)
Member("Pungarta").loc = point (307,68)
Member("Pilthaarra").loc = point (375,25)
Member("Purrula").loc = point (445,68)
Member("Mpitjaana").loc = point (549,112)
end
Thank you, else
As James suggested:
However, you call this Manager each time Manager refreshes the screen, so the sprites will be constantly placed in these positions, even if the user tries to move them.
I suspect that you want 'resetpOrigLoc()' Manager in a beginSprite handler, instead of prepareFrame.
-
Actions on the sprite sheet are ignored!
Hello
Super weird, I imported sprite sheet (with Flash) and all the actions on stage or inside the sprite sheet symbol are ignored, while other animations play.
Like reverse playback...
Help, please!
To create say an effect loop for the symbol of sprite sheet, you need to bindTimelineAction for the sprite sheet symbol.
Symbol.bindTimelineAction (compId, 'bird', 'Default editing', 'complete', function (sym, e) {})
SYM. Play (0);
});
Here the birds is the name of the sprite sheet symbol and the above code is added to the event of 'compositionReady' of the stadium.
I enclose a sample of reference.
Thank you and best regards,
Roger Simon
-
The code I have so far.
The sprite is equal to a paddle which I want to go left to right on the screen using the arrow keys.
However, the code allows only the palette in the direction of the + code, I assumed - would do the opposite, but he stops just the sprite to move.
Also I have this code in on prepareFrame me, did had no effect on the code?
If keycode = 124 then - right arrow key
Sprite (27) .locH = sprite (27) .locH - 2
on the other
If .loc sprite (27) = (477) then - this code was to stop the paddle loose at the edge of the screen.
If keycode = 123
Sprite (27) .locH = .locH sprite (27) + 2
end if
end if
end if
end
any help with this would be greatly appreciated thanks.
This is a behavior that you can attach to your sprite who does what you want.
Min and Max of locH values are precalculated in beginSprite. It is slightly more efficient and makes the EnterFrame code easier to understand.
-Movement of Sprite with the behavior of the keys left/right arrow
Sp property - refers to this sprite
property speed - the number of pixels to move the sprite each image
property MaxRight - locH Maximum sprite can move to
MinLeft property - locH Minimum sprite can move to
On GetBehaviorDescription me
return ' movement left/right Sprite with arrows. "
end GetBehaviorDescription
On GetPropertyDescriptionList me
Accessories = [:]
Accessories [#Speed] = [#default: 5, #format: #integer, #Range: [#min:1, #max: 20], #comment: "Number of pixels to move sprite every EnterFrame."]
return accessories
end GetPropertyDescriptionList
on beginSprite me
SP = sprite (me.spriteNum)
-calculate MaxRight, MinLeft
regPoint = Sp.member.regpoint
MinLeft = regPoint [1]
MaxRight (stage) =.rect.width - (Sp.width - regPoint [1])
end beginSprite
on enterFrame me
If _key.keyPressed (123) then - left arrow
Sp.locH = max (Sp.locH - speed, MinLeft)
end if
If _key.keyPressed (124) so - right arrow
Sp.locH = min (Sp.locH + speed, MaxRight)
end if
end enterFrame
-
How to get the number of the sprite in a KeyUp script?
I have an application with a series of text entry fields. Users enter numeric values in each field. I want to have the keyboard focus to the next field when the user clicks on the Enter key. So far I've been able to do this by hard coding the following sprite as follows number...
-----
box (_Key.keycode) of
36:-Enter key
_movie.keyboardFocusSprite = 64 - this is the value hardcoded the following sprite
numString = member("ALA_CFTHolder").text
otherwise:-manages the regular entries
...
cases of termination
-----
I want to find a way to move to the next sprite without hard-code the value. I tried to read the _movie.keyboardFocusSprite but he is always-1. There must be a way to do this.
Thank you.
See if this code will help you. Any sprite channel, the fields are in, but the focus order is determined by the order in which the sprites appear on the partition. If this isn't what you want, it will take a different approach.
---------------------------------------------------------------------
property spriteNum, pEntrySpriteList
on beginSprite me
pEntrySpriteList =]
sendAllSprites (#updateEntrySpriteList, spriteNum)
end
on updateEntrySpriteList me, senderSpriteNum
pEntrySpriteList.add (senderSpriteNum)
If spriteNum <> senderSpriteNum then (senderSpriteNum) sprite (spriteNum).pEntrySpriteList.add
end
on keyDown me
case (keycode)
36:-Enter key
myIndex = pEntrySpriteList.findPos (spriteNum)
If myIndex = pEntrySpriteList.count then
the keyboardFocusSprite = pEntrySpriteList [1]
on the other
the keyboardFocusSprite = pEntrySpriteList [myIndex + 1]
end if
otherwise:-manages the regular entries
Pass
cases of termination
end
-
How to return the sprite object?
I want to load both image and add each image to each sprite object, like photo one sprite1 and photo b to spriteb, I know that I can load a pictue with the following code:
loadImage ('a');
loadImage ('b');
private void loadImage(imagePath:String):void {}
var loader: Loader = new Loader();
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onImageLoaded);
Loader.Load (new URLRequest (imagePath));
}
private void onImageLoaded(event:Event):Sprite {}
var loaderInfo:LoaderInfo = event.target as LoaderInfo;
_loadedBitmap = LoaderInfo.Content as Bitmap;
Return runPostImageLoad (_sprite);
}
private void runPostImageLoad(_sprite:Sprite):Sprite {}
... photo of //load
}But I want to make my code like the following, because I want to use sprite1, sprite2 for something else:
var sprite1:Sprite = loadImage ('a');
var sprite2:Sprite = loadImage ('b');I don't know how to change the loadImage function to return the sprite object. Could someone tell me how to do?
Thank you
use:
private var _sprite:Sprite;
.
.
private void loadImage(imagePath:String):Sprite {}
var loader: Loader = new Loader();
Loader.Name = "Loader";
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onImageLoaded);
Loader.Load (new URLRequest (imagePath));
_sprite = new Sprite();
_sprite. AddChild ("Loader");
return _sprite
}
private void onImageLoaded(event:Event):void {}
var loaderInfo:LoaderInfo = event.target as LoaderInfo;
_loadedBitmap = LoaderInfo.Content as Bitmap;
runPostImageLoad();
}
private function runPostImageLoad (): void {}
just draw the shape of the irregular part
If (_loadedBitmap...) {
_sprite.removeChild (_sprite.getChildByName ("loader"));
_sprite. Graphics.drawRect (...);
}
}
p.s. Please check the correct and useful.
-
Objects added to the Sprite/MC are not
Hello everyone, I worked on a construction set and met a strange problem this morning, when instead of adding objects directly to the step that I had to add a Sprite (I also tried with a MovieClip) on the stage instead and they do not seem to. If anyone can see why this is happening, I will be eternally grateful, because it has left me speechless! And Yes, before anyone says, the MC/Sprite I add objects to a certainly added to the stage, I've made this mistake before and do not rely on what actually once again
I essentially built the game levels using various different objects (rectangles, circles, etc.), built in the attached with sprites and Box2D physics engine to represent the user. During the creation of each of these object I provide a DisplayObjectContainer in which the sprite that represents the object should be placed. So far I've been simply supply my class of basic game as DisplayObjectContainer, with no problems whatsoever - everything is displayed properly. A new level design, however, it will take apply me a mask to the level (but not the GUI) so I decided to put all the objects level within a MovieClip or Sprite instead. I created the new sprite as such:
levelObjects = new Sprite();
levelObjects.x = levelObjects.y = 0; In order to ensure
levelObjects.width = GameProperties.stageWidth;
levelObjects.height = GameProperties.stageHeight;
levelObjects.visible = true; In order to ensure
addChild (levelObjects)and have provided this sprite for level objects like a DisplayObjectContainer instead of the base class. Everything is added to the stage that I can click on things and sounds associated with the objects game play correctly, but nothing is actually visible! As I mentioned above, I tried this using a MovieClip instead but got the same result. Anyone has an idea why this is happening and how I can fix this problem? Thank you for posting anything that might help, I have tried everything I can think so now I'm going to rack your brain rather haha
Thanks in advance,
Dinkyfish
Cannot set the width and height of an empty object properties... I mean you can, but it will not work and curiously has an effect of making things do not appear.
-
Newbie here. Writing a Manager to add the number of sprites to a cast member located within the boundaries of another sprite. Thank you.
I would do it with a kind of system of legend. There is a global variable, we'll call it gTotal, which stores the actual number of sprites in one another. Make a #movie like this script:
global gTotal
on getNumWithin vSpriteNum
Direct = .rect sprite (vSpriteNum)
gTotal = 0
sendAllSprites (#AreYouWithin, iRect)
endThen put behavior on sprites which are mobile (i.e. those that could be within the other sprite)
global gTotal
on AreYouWithin me, vRect
If sprite (me.spriteNum).rect.union (vRect) = vRect then
gTotal = gTotal + 1
end if
endNow, all you need to do is use the command:
getNumWithin (spriteNameOrNum)
and check the value of gTotal. So basically, if you check to see how many sprites are within the limits of the sprite in channel 10, you would call:
getNumWithin (10)
put gTotal
and gTotal would have the correct number of sprites. If you name your sprites (Director 10 and above), you can use the name of the sprite instead of the number of the sprite.
-
Confused about the extension of the Sprite class
Howdy-
I learn programming with object oriented ActionScript and am confused about the class Sprite and OO in general.
My understanding is that the Sprite class allows you to group a set of objects that you can manipulate all the objects at the same time.
I explored the Open Flash Chart code and note that the main class extends the Sprite class:
Base/public class extends Sprite {}
What this lets you do?
Also, on a related note, how to draw, say, a line once I extended?
Without extend Sprite I could write:
var graphContainer:Sprite = new Sprite();
var newLine:Graphics = graphContainer.graphics;
...
And it works very well. Once I have extend the Sprite class, I'm lost. How can I modify this code so that it still draws a line? I tried:
var newLine:Graphics = this.graphics;
My understanding is that since I extend the Sprite class, I should still be able to call its method chart (or property? I have no idea). But, he screams at me, saying "1046: Type was not found or is not a constant of compilation: graphs.»
A number of things.
First of all, I would not use this approach in your table constructor. Setting the width and height only makes sense if you adjust the width and height of the existing content, and the table (Sprite) does not at this time here. If you want to give the table a 'size', you could do it like this:
public function Chart (width: Number, height: Number) {}
This.Width = width;
This.Height = height;
put in a background invisible to this size:
this.graphics.beginFill (0,0);
this.graphics.drawRect (0,0,width,height);
}There are other ways, including putting in a form or a Sprite of child as a child for the background so that clear will not erase the background of the chart. This way you could have properties for the background in your table class and update the background as a child DisplayObject instance... a few ideas to think to...
Then, after that, your chart should be functional...
Then back in your scenario, you could do this:
import graphics. Table;
Stop()
var myNewChart:Chart = new Chart (300,200)
myNewChart.render ();
addChild (myNewChart) -
Hello everyone, would you please show me a way to put a sprite from another sprite on the stage (for example the sprite a resident 5 mm to the b on the stage, when a, b of sprite sprite does not change compared to the sprite sprite one)? (could you please introduce me a tutorial or a sample abut this case)
Sincerely yours MohsenaTry something like:
-attached to the sprite b:
on beginSprite me
Sprite (me.spriteNum) .loc = .loc sprite (a) + point (5, 0)
end -
I have a script on a chart with an arrow down. When I click on the button, I want to spend anoter sprite named "letter". The script works, but the repeat loop to continue the sprite while the mouse button is released - actis instantly. So instead of slowly, move 5 pixels at a time, he moves to 200 pixels at a time (this range is defined in the script, since the start position of the sprite is 495 - 495-295 = 200).
Can someone let me know if there is a code I can insert in the repeat loop to slow it down?
JARGON CODE IS ATTACHED.
Thanks for all the help again. I finally got it!
-
Problem changing what the sprite size?
I want to adjust the size of the sprite, some changing their attributes of LOW TOP, LEFT, RIGHT. For example, I want to use this code to create a longer box shape:
Sprite (1) .the = sprite (1) .the - 5
Sprite (1) .right = .right sprite (1) + 5
In my mind, the left edge of box (sprite (1)) should pass to the left for 5 unit and right edge move right 5 unit. But in fact, only the right move. The left does not move!
See my example:
http://www.gzvr.com/test/ChangeSpriteEdge.htm
If all the LEFT RIGHT UP DOWN are defined in the code as above, I found that the last line of code works! Why?
Try this:
vSprite = sprite (1)
vRect = vSprite.rect
vRect.right = vRect.right + 5
vRect.left = vRect.left - 5
vSprite.rect = vRect -
Is Adobe Flash a good program to use for the sprite animation?
I know that many people use flash for cartoons and things like that but what about sprite animation? I'm looking for a software that will do this kind of animation very well and since I already have a subscription with After Effects and first, it wouldn't hurt to see if Flash would work too.
Flash is very strong for character animation, or whatever it is animation really. Should normally be used sprite sheets, a Flash animation is a timeline of the individual poses. But other tools do sprite sheets, and Flash Pro is a good tool for creating those. In addition, when you make HTML5 Canvas, Flash Pro projects arguably to use sprite sheets.
Maybe you are looking for
-
9.1.3 Safari does not work well
Hello I've just updated my safari to the 9.1.3 today. However, since it does not work very well. All google services are down, most of the other sites of loading is very slow, facebook works fine but slow as well. I've tried resetting safari but did
-
I just changed my Appleid but when I went to iTunes and tried to connect to iTunes it kept asking for my password for my old Appleid. I could find no case change to the new so I could sign. There must be a way to do it with my new Appleid. Thank you
-
Hello HP,. Could you please tell me if it is possible to install 2 x 2 GB Ram on dv6520ea? Windows Vista x 32 will use the 4 GB of RAM? Thanks in advance, Bill P.
-
How to unlock limewire? __
Accidentally, I clicked the button 'block' the Firewall blocked the limewire. Everytime I open the limewire it says it has an error and could not initialize and start. He says it's because of a firewall program blocks limwire access to internet con
-
Line does not come after each row of the list
Hello I show a list in my current application. In the list, I paint a line after each line. Just a line of string, I add in each line. Now when I'm checking the list, on some devices, lines are coming. As in Bold 9790, after each line, a line is adde