Drawing back to transparent in actionscript - actionscript

When I have a movie clip, it starts out s transparent.
I can draw on this movie clip, producing essentially a transparent image. That is, wherever I have not yet drawn, shows the layer below, and where I have drawn, it shows what I have just drawn.
Question is, how to "undraw" things in this movie clip, so that I can see what is behind it. I know I could erase the movie clip, but is there a way to un-draw parts of the movie clip to get it back to transparent?

You can use another movie clip as a mask. I think it's setMask() in MovieClip to set another movieclip as its mask. Then you can draw on the mask movieclip the areas you want to show. Unfortunately in AS2, you can only use vector shapes as masks.

Related

How to create a non-rectangular UIImageView

I'm trying to make a ViewController that presents info from a webpage like this:
However, I'm confused on one thing. How did they get the imageView to display an image that's cut off at the corner, i.e. not rectangular? Do you think they created that player card in Photoshop and used it as the background for the imageView image, or did they create it programmatically?
I wonder because the image is behind the picture of the bear, so I imagine if they created the background in Photoshop, how would they get the image behind the bear head? They can't have just created the card with the player's picture as part of it, then loaded the whole image because if they traded the player, because I'm sure they pull the player info and picture from the web so they can have a card for all players, even if they trade or acquire a new player mid-season, without having to update the app (and add the finished image to images.xcassets).
This can be composed from two CALayers at runtime. Put the picture on the bottom layer; the picture can come from anywhere - the web, the bundle, etc. the image source could be dynamic.
Put another CALayer on top, with the frame rendered with opaque colors, and a transparent cut-out for the picture in the middle:
There are a bunch of ways to do this. A simple and flexible way to do it is to create a CAShapeLayer that's the same size as the image view, with it's origin at 0,0, and add it as the UIImageView's layer's mask.
You'd create a filled UIBezierPath that maps out the part of the image you want to show, and install the bezier path's CGPath into the mask layer's path property.
The result would be that the image view is cropped so that only the part inside the shape is drawn.

iOS Triangular Image view

so I'm making a game and pretty much when the player (which is a triangular shaped rocket) hits an object flying at you (a rock) the game ends. I have everything working well but my problem is the rocket is a triangle yet the image view its in is a rectangle. So if the edge of the image view touches the rock the game will end even though the actual rocket didn't touch the object. So basically how can I make the rock image view not recognize the parts of the rocket image view which are empty? Basically a triangular shaped image view.
Thank you for your help. Let me know if you need more info or want to see the code I have for them to collide.
You analytically present the triangle with 3 points and a rock with a center and radius then find and implement an algorithm checking a hit test between those 2 shapes. Or draw the two shapes onto some graphics context using an appropriate blending and check for overlapping pixels (for instance draw one as red and another as green and look if a pixel that is both red and green exists) you could actually do that with 2 image views having those colors and .5f alpha added on the 3rd invisible view but you would need to get the image from the view and then iterate through all the pixels. In any of the cases do this check only after the corresponding view frames overlap.

Cocos2d iOS: How to draw shadows underneath a CCNode

I'm building a simple card game and would like to draw shadows when users pick the cards up. Any quick solutions?
Example:
Quick solution? Draw a black shape (or whatever the shadow color is) on a layer behind your selected card. Just like in your example image you have a fuzzy gray square box behind, but yet slightly down and to the right, of another square that is on a layer on top of it. Or you can draw the shape underneath the card and move the card a little to give the illusion of it rising.

How do I add a gradient fill to a movie clip in as3 flash

trying to make code to first addchild movie clip, then apply a gradient to it. Some posts have talked about making a gradient box the same as the bounding area of the movie clip and add a mask which would be great but I'm getting no where. Code I'm using is more confusing then anything if I posted every thing I tried. Wouldn't have to be a movieclip, could have it be a button or graphic.
Use MovieClip.graphics.beginGradientFill(fillType, colors);
For example,
yourMovieClip.beginGradientFill(GradientType.LINEAR, [0XFF0000, 0XC0C0C0])
will make your MovieClip a linear gradient of red and a grayish color, and you can change the SpreadMethod to, for example, REPEAT, REFLECT, or PAD (SpreadMethod.type).
See the Adobe LiveDocs Reference of it.
Also, before you ask, you need to import Classes from flash.display.

ccDraw. Fill screen everywhere except on sprite

So I am trying to get a very basic "flashlight"-style thing going in one of my games.
The way I was getting it to work, was having a layer on top of my game screen, and this layer would draw a black rectangle with ~ 80% opacity, creating the look of darkness on top of my game scene.
ccDrawSolidRect(ccp(0,0), ccp(480,320), ccc4f(0, 0, 0, 0.8));
What I want to do is draw this rectangle EVERYWHERE on the screen, except for around a cone of vision that will represent the "light source".
What this would create would be a dark overlay on top of everything except for the light, giving it the illusion of a torch/light/flashlight.
The only way I can foresee this happening is by using ccDrawSolidPoly(), but since the position of the light source changes, so would the vertices for the poly.
Any suggestions on how to achieve this would be great.
You can use ccDrawSolidPoly() and avoid having to manually update vertices. For this you can create a new subclass of CCNode representing your light object, and do your custom shape drawing in its -(void)draw method.
The ccDraw...() functions will draw relative to the local sprite coordinates, so you can then move and rotate your new sprite to suit your needs and cocos2d will do the vertices transformations for you.
Update: I found out that you might be better off subclassing CCDrawNode instead of CCNode, as it has some facilities for raw OpenGL drawing (OpenGL's vertexArrayBuffer and vertexBufferObject internal variables and a buffer for vertices, their colors and their texCoords). If your stuff is very simple, maybe subclassing the plain CCNode is enough.
Could a png be used instead as a mask, as the layer above
Like that binocular vision you sometimes see in cartoons?
Or a filter similar to a photoshop mask that darkens as it grows outwardly to wards the edge of the screen
Just a thought anyway...
A picture of more of what your trying to explain might be good too

Resources