Skip to content

Instantly share code, notes, and snippets.

@bobrokrol
Last active November 3, 2019 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bobrokrol/35554b928dc29333fb1da72f240b439e to your computer and use it in GitHub Desktop.
Save bobrokrol/35554b928dc29333fb1da72f240b439e to your computer and use it in GitHub Desktop.
package ;
//import cgs.cardlib.globals.MonsterNames;
import openfl.display.DisplayObjectShader;
import openfl.display.Sprite;
import openfl.events.Event;
import openfl.events.MouseEvent;
import openfl.filters.ShaderFilter;
/**
* ...
* @author Rich
*/
class MainTest2 extends Sprite {
public function new() {
super();
graphics.beginFill(0xFFFFFF);
graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
var spr1:Sprite = new Sprite();
var spr2:Sprite = new Sprite();
var spr2c:Sprite = new Sprite();
var rotat:Float = 0;
var shader2:BitmapMaskShader;
private function onMouseDown(e:MouseEvent):Void
{
spr1.graphics.beginFill(0x000000);
spr1.graphics.drawRect(0, 0, 128, 128);
spr2.graphics.beginFill(0xFFFF00);
spr2.graphics.drawRect(0, 0, 128, 128);
addChild(spr1);
spr2c.addChild(spr2);
spr2.cacheAsBitmap = true;
spr1.x = spr2c.x = 200;
spr1.y = spr2c.y = 200;
addChild(spr2c);
shader2 = new BitmapMaskShader ();
var shf:ShaderFilter = new ShaderFilter(shader2);
shf.shader = shader2;
spr2.filters = null;
spr2.filters = [shf];
removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(ev:Event):Void
{
}
private function onMouseMove(ev:MouseEvent):Void
{
rotat++;
spr2c.rotation = rotat;
}
}
class BitmapMaskShader extends DisplayObjectShader {
@:glFragmentSource("
#pragma header
uniform sampler2D maskImage;
uniform vec2 maskPos;
uniform float testF;
uniform mat3 matrix;
void main(void) {
#pragma body
vec4 color2 = texture2D (openfl_Texture, openfl_TextureCoordv);
if (openfl_TextureCoordv.x > 0.5)
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
} else
{
gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0);
}
if (color2.a == 0.0)
{
gl_FragColor = vec4(1.0, 1.0, 0.0, 1);
}
}
")
public function new () {
super ();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment