Я хочу изменить четыре угла (Corner Pin) FLVPlayback, используя сценарий действия, например, ниже.Как изменить четыре угла FLVPlayback с помощью скрипта действий?
Существуют ли какие-либо методы для достижения этой задачи от сценария действий?
Я хочу изменить четыре угла (Corner Pin) FLVPlayback, используя сценарий действия, например, ниже.Как изменить четыре угла FLVPlayback с помощью скрипта действий?
Существуют ли какие-либо методы для достижения этой задачи от сценария действий?
Вы можете использовать DistortImage Class
.
Оригинальная версия класса ActionScript 2.0 была написана Томасом Пфайффером (aka kiroukou), вдохновленным Андре Мишель (andre-michelle.com). Ruben Swieringa переписал класс Томаса Пфайффера в ActionScript 3.0, внеся некоторые незначительные изменения/дополнения.
Описание: Демо-версия from Ruben Swieringa.
Этот класс работает с Bitmap image
. Он должен быть адаптирован к flvplayback component
, используя метод draw для каждого enterFrame.
Порядок функционирования
Вы сначала получаете the AS3 Class here.
Вы размещаете этот код в .as file
и назовите его DistortImage
. Вы помещаете этот файл в эту иерархию папок: org> flashsandy> diqplay>DistortImage.as
У вас есть MovieClip связанный DragBtn
в вашей библиотеке. Вы поместите следующий код в панели ACTIONSCRIPT вашего .fla:
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: Ошибка # 1006: startDrag не является функцией. \t at Distort_fla :: MainTimeline/drag() ' – Suravi
@pudubu - Это потому, что ваша кнопка перетаскивания является экземпляром' Button Class'. Вам просто нужно нажать на DragButton в своей библиотеке> Свойства> Тип> 'MovieClip'. Или создать MovieClip с именем DragButton. – helloflash
@pudubu - Это работает? – helloflash
Вы хотите перейти от первого изображения до последнего или преобразовать b между ними? – helloflash
Я хочу переместить (вверх, вниз, влево, вправо) один угол flvplayback, используя сценарий действия, такой как B-образ. – Suravi
Есть ли способ сделать это для Flvplayback? http://www.flashandmath.com/advanced/p10triangles/method.html – Suravi