【问题标题】:How to change four corners of FLVPlayback using action script?如何使用动作脚本改变 FLVPlayback 的四个角?
【发布时间】:2014-09-04 13:02:15
【问题描述】:

我想使用如下图所示的动作脚本更改 FLVPlayback 的四个角(角销)。

有没有什么方法可以从动作脚本中完成这个任务?

【问题讨论】:

  • 你是想直接从第一张图片传到最后一张,还是做b之间的转换?
  • 我想使用像 B 图像这样的动作脚本移动(上、下、左、右)flvplayback 的一个角。
  • Flvplayback 有没有办法做到这一点? flashandmath.com/advanced/p10triangles/method.html

标签: actionscript-3 flash flvplayback


【解决方案1】:

您可以使用DistortImage Class

课程的原始 Actionscript 2.0 版本由 Thomas Pfeiffer(又名 kiroukou)编写,灵感来自 Andre Michelle (andre-michelle.com)。 Ruben Swieringa 在 Actionscript 3.0 中重写了 Thomas Pfeiffer 的课程,做了一些小的更改/添加。

这是一个演示 from Ruben Swieringa

这个类使用Bitmap image。它必须通过每个 enterFrame 使用 draw 方法来适应 flvplayback component

作案手法

你首先得到the AS3 Class here

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

您的库中有一个链接 DragBtn 的影片剪辑。您将以下代码放在 .fla 的 actionScript 面板中:

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 方法可能也适用于视频。

【讨论】:

  • 谢谢helloflash ...当我尝试从角落拖动时发生错误。TypeError: Error #1006: startDrag is not a function. at Distort_fla::MainTimeline/drag()
  • @pudubu - 这是因为您的拖动按钮是Button Class 的一个实例。您只需单击库中的 DragButton > 属性 > 类型 > MovieClip。或者创建一个名为 DragButton 的影片剪辑。
猜你喜欢
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2013-05-08
  • 2017-12-08
  • 2012-06-30
  • 1970-01-01
  • 2017-04-03
  • 2014-02-18
相关资源
最近更新 更多