|
|
|||||
Сменить координаты маски.
Вопрос не сложный, но что-то запутался.
Мне нужно натянуть текстуру на текст - цифра "8" допустим. num = new TextField (200, 250, '', 'Arial', 200); addChild(num); num.text = '8'; image = new ImageLoader(); image.source = 'assets/7.jpg';// текстура image.addEventListener(Event.COMPLETE, imageLoaded); bg = new MaskedSprite(); addChild(bg); bg.addChild(image); bg.mask = num; public class MaskedSprite extends Sprite { public var mask:DisplayObject; private static const MASK_MODE_INVERTED:String = "maskinverted"; public function MaskedSprite() { BlendMode.register(MASK_MODE_INVERTED, Context3DBlendFactor.ZERO, Context3DBlendFactor.ONE_MINUS_SOURCE_ALPHA, false); } override public function render(support:RenderSupport, parentAlpha:Number):void { var _this:MaskedSprite = this; if (mask != null) { RenderTexturePool.instance.getTemporal(function(eraserTexture:RenderTexture):void { RenderTexturePool.instance.getTemporal(function(composedTexture:RenderTexture):void { eraserTexture.clear(); composedTexture.clear(); eraserTexture.draw(new Quad(eraserTexture.width, eraserTexture.height, 0xFFFFFF)); mask.blendMode = BlendMode.ERASE; mask.visible = true; eraserTexture.draw(mask, mask.getTransformationMatrix(Starling.current.root)); mask.visible = false; for (var n:int = 0; n < numChildren; n++) composedTexture.draw(getChildAt(n), support.modelViewMatrix); var eraserImage:Image = new Image(eraserTexture); eraserImage.blendMode = MASK_MODE_INVERTED; composedTexture.draw(eraserImage); support.pushMatrix(); support.loadIdentity(); new Image(composedTexture).render(support, parentAlpha); support.popMatrix(); }); }); } else { super.render(support, parentAlpha); } } } Где можно задать координаты маски или текстуры?
__________________
In Code We Trust |
|
|||||
>>Где можно задать координаты маски или текстуры?
координаты маски это тупо bg.x, не? во всяком случае, для твоего примера исправно двигает картинку на цифре можно двигать и image внутри самой маски, но тогда в MaskedSprite отрисовывать содержимое надо "как есть", т.е. так работает, но я не поручусь, что оно не вылезет боком где-нибудь |
|
|||||
Привет!
Цитата:
И текстура должна на цифре рандомно переместится и цифра на сцене. Цитата:
__________________
In Code We Trust |
|
|||||
>> Дело в том, что мне и цифру нужно двигать и маску тоже.
все равно не оч. понятно в чем трабл просто когда двигаем цифру, надо двигать и подложку тоже, а когда маску, то только подложку public class Main extends Sprite { private var image:Image; private var num:Sprite; private var bg:MaskedSprite; [Embed(source = "pic.png")] public static const pic_png:Class; public function Main():void { num = new Sprite; var tf:TextField = new TextField (200, 250, '8', 'Arial', 200); num.addChild(tf); image = Image.fromBitmap(new pic_png()); bg = new MaskedSprite(); bg.addChild(image); num.addChild(bg); bg.mask = tf; addChild(num); num.addEventListener(TouchEvent.TOUCH, num_touch); } private function num_touch(e:TouchEvent):void { var touchMoved:Touch = e.getTouch(num, TouchPhase.MOVED); if (touchMoved) { var del:Point = touchMoved.getMovement(this); // с зажатым Ctrl двигаем только картинку // без Ctrl двигаем саму маску вместе с картинкой if (e.ctrlKey) { bg.x += del.x; bg.y += del.y; }else { num.x += del.x; num.y += del.y; } } } } |
|
|||||
Цитата:
Добавлено через 1 час 35 минут В общем разобрался. Там фезеровский навигатор мне мешал, путал координаты. Спасибо.
__________________
In Code We Trust |
Часовой пояс GMT +4, время: 17:24. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|