PDA

Просмотр полной версии : Объединение двух кодов проигрывания видео


SergVrn
19.01.2018, 16:14
Здравствуйте.
Подскажите - как объединить два кода в документе Main.as
(Первый код - растягивает видео под окно и добавляет бесконечные повторы. А второй код - проигрывает видео без звука.)


var MyVideo:Video = new Video();
addChild(MyVideo);


MyVideo.height= 537.6;
MyVideo.width= 720.6;
var MyNC:NetConnection = new NetConnection();
MyNC.connect(null);

var MyNS:NetStream = new NetStream(MyNC);
MyNS.play("1.mp4");

MyVideo.attachNetStream(MyNS);


MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
function asyncErrorHandler(event:AsyncErrorEvent):void
{
}

MyNS.addEventListener(NetStatusEvent.NET_STATUS, goAgain);
function goAgain (event:NetStatusEvent): void {
switch (event.info.code) {
case "NetStream.Play.Stop":
MyNS.seek(0);
break;
}
}



package {
import flash.display.Sprite;
import flash.events.*;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.SoundTransform;

public class Main extends Sprite {
private var videoURL:String = "1.mp4";
private var connection:NetConnection;
private var stream:NetStream;
private var volume:Number;

public function Main() {
volume = 1;
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);
stage.addEventListener(MouseEvent.CLICK, onClick);
}

private function onClick(e:MouseEvent):void{
volume+=0.2;
if(volume>1){
volume = 0;
}
setVolume(volume);
}

private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Unable to locate video: " + videoURL);
break;
}
volume = 0;
setVolume(volume);
}

private function connectStream():void {
stream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
var video:Video = new Video();
video.attachNetStream(stream);
stream.play(videoURL);
addChild(video);

}

private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}

private function asyncErrorHandler(event:AsyncErrorEvent):void {
// ignore AsyncErrorEvent events.
}
private function setVolume(volume:Number):void {
trace("setVolume: " + volume.toFixed(2));
var transform:SoundTransform = stream.soundTransform;
transform.volume = volume;
stream.soundTransform = transform;


}
}
}

ZergMaster
19.01.2018, 16:40
надо найти, где во втором коде присваивается volume стриму и перенести это в первый:


var myVideo:Video = new Video();
myVideo.height = 537.6;
myVideo.width = 720.6;
addChild(myVideo);

var netConnection:NetConnection = new NetConnection();
netConnection.connect(null);

var myStream:NetStream = new NetStream(netConnection);
myStream.play("1.mp4");

var transform:SoundTransform = myStream.soundTransform;
transform.volume = 0;

myStream.soundTransform = transform;

myStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, function (event:AsyncErrorEvent):void {});
myStream.addEventListener(NetStatusEvent.NET_STATUS, goAgain);

myVideo.attachNetStream(myStream);

function goAgain (event:NetStatusEvent): void
{
if(event.info.code == "NetStream.Play.Stop")
myStream.seek(0);
}

SergVrn
19.01.2018, 17:16
ZergMaster , не работает.

Выдает ошибку :
"Монтажный кадр 1, слой "Слой 1", кадр 1, строка 12, столбец 5 1152: Конфликт с наследуемым определением flash.display: DisplayObject.transform в пространстве имен public."

ZergMaster
19.01.2018, 17:29
ну тада незнаааааю. Можно попробовать добавить в начало документа
import flash.media.SoundTransform;
вместо
var transform:SoundTransform = myStream.soundTransform;
transform.volume = 0;
написать
myStream.soundTransform = new SoundTransform(0);

либо
myStream.soundTransform = new flash.media.SoundTransform(0);
либо
myStream.soundTransform.volume = 0;

undefined
19.01.2018, 17:38
а второй код вынесен в отдельный as файл?

SergVrn
19.01.2018, 19:51
ZergMaster, теперь заработало.
Спасибо.