首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用动作脚本更改FLVPlayback的四个角?

如何使用动作脚本更改FLVPlayback的四个角?
EN

Stack Overflow用户
提问于 2014-09-04 13:02:15
回答 1查看 151关注 0票数 0

我想改变FLVPlayback的四个角落(角销)使用行动脚本,如下面的图像。

是否有任何方法可以通过操作脚本来完成此任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 12:08:03

您可以使用DistortImage Class

这个类的最初的Actionscript 2.0版本是由Thomas (又名基鲁库)编写的,灵感来自Andre Michelle (andre-michelle.com)。Ruben在Actionscript 3.0中重写了Thomas的类,做了一些小的修改/添加。

这里是一个演示鲁本·斯威林加

这个类与Bitmap image一起工作。它必须通过使用每个flvplayback component的绘制方法来适应一个enterFrame。

作案方式

你先得到这里的AS3类

将这些代码放入.as file中,并将其命名为DistortImage。将此文件放入文件夹的层次结构中: org > flashsandy > diqplay > DistortImage.as

库中有一个MovieClip链接的DragBtn。将以下代码放在.fla的.fla面板中:

代码语言:javascript
复制
import org.flashsandy.display.*;

vidPlayer.source = 'http://www.helpexamples.com/flash/video/caption_video.flv';
vidPlayer.scaleMode = 'exactFit';
vidPlayer.skin = null;
vidPlayer.visible = false; // we only see the Bitmap drawn

var C:Sprite= new Sprite(); // Sprite container
C.x = C.y = 100; // video position
this.addChild(C);

var shape:Shape = new Shape();
this.C.addChild(shape);

var iw:int = vidPlayer.width;
var ih:int = vidPlayer.height;

var distortion:DistortImage = new DistortImage(iw, ih, 2, 2);
var bitmapData:BitmapData = new BitmapData(iw, ih);
var center:Point;

function getDisplayObjectCenter(child:DisplayObject, x:Number = 0, y:Number = 0):Point {
    center = new Point();
    center.x = child.x + child.width / 2 + x;
    center.y = child.y + child.height / 2 + y;
    return center;
}

function Enter(e:Event):void {
    this.shape.graphics.clear();
    this.bitmapData.draw(vidPlayer); // video drawn enterFrame
    distortion.setTransform(this.shape.graphics,
                            this.bitmapData, 
                            this.getDisplayObjectCenter(this.d1, 0, 0), 
                            this.getDisplayObjectCenter(this.d2, 0, 0), 
                            this.getDisplayObjectCenter(this.d3, 0, 0), 
                            this.getDisplayObjectCenter(this.d4, 0, 0));
}
addEventListener(Event.ENTER_FRAME, Enter);

var d1:DragBtn = new DragBtn();
d1.x = d1.y = 0;
this.C.addChild(d1);

var d2:DragBtn = new DragBtn();
d2.x = iw;
d2.y = 0;
this.C.addChild(d2);

var d3:DragBtn = new DragBtn();
d3.x = iw;
d3.y = ih - 60;
this.C.addChild(d3);

var d4:DragBtn = new DragBtn();
d4.x = 0;
d4.y = ih - 60;
this.C.addChild(d4);

d1.addEventListener(MouseEvent.MOUSE_DOWN, drag);
d2.addEventListener(MouseEvent.MOUSE_DOWN, drag);
d3.addEventListener(MouseEvent.MOUSE_DOWN, drag);
d4.addEventListener(MouseEvent.MOUSE_DOWN, drag);
function drag(e:MouseEvent):void {e.target.startDrag();}

addEventListener(MouseEvent.MOUSE_UP, up);
function up(e:MouseEvent):void {stopDrag();}

结果

然后你可以像这样变形你的视频:

flashandmath方法可能也适用于视频。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25666251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档