Flash not displaying properly in browsers
I've got a fla player and I'm trying to get it to display inside a div properly, it looks ok in IE (only after you refresh the page), but none of the other browsers show it properly (only 1/4 of the tv shows).. The flash document size is 336px x 220px and I've placed the tv and remote inside.
I'm using SWFObject to call the flash using this:
<script type="text/javascript">
var so = new SWFObject("tv.swf?videoUrl=video1.flv&imageUrl=image/image1.jpg&tvName=", "DSI", "100%", "100%", "6", "");
so.addVariable("autostart","true");
so.addParam("allowFullScreen", "true");
so.write("flashcontent");
</script>
And it sits inside a div which is also 336px x 220px with a red border (for visibility only).
Here's the URL: http://live.gfwa.360southclients.com/commercial/test.html
Can someone help me out with this to get it to display ok, I'm not so good with flash etc.. :S
Oh and here's the action script file:
package
{
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.net.*;
import flash.utils.*;
public class tvplayer extends MovieClip
{
private var seekbarChangeInterval:uint;
private var vid:Video;
private var mute:Boolean;
private var imageUrl:String;
public var remote_mc:MovieClip;
private var realVideoWidth:Number;
private var volumeChangeInterval:uint;
private var videoLoaded:Boolean;
private var currentState:Boolean;
private var req:URLRequest;
private var screenHeight:Number;
private var screenWidth:Number;
private var seekbarHideTimer:Timer;
private var videoUrl:String;
private var realVideoHeight:Number;
private var totalVideoTime:Number;
public var All_mc:MovieClip;
private var xmlLoader:URLLoader;
private var muteHideTimer:Timer;
private var volumeHideTimer:Timer;
private var videoLoadedInterval:uint;
private var imageLoader:Loader;
private var videoLoadedTime:Number;
private var showVideo:Boolean;
private var nc:NetConnection;
private var ns:NetStream;
private var latestVolumeVal:Number;
public function tvplayer() : void
{
nc = new NetConnection();
currentState = false;
screenHeight = 336;
screenWidth = 580;
setValues();
readFlashVars();
addButtonsEvents();
arrangeObjects();
loadImage();
loadVideo();
return;
}// end function
private function videoFinished() : void
{
ns.close();
vid.clear();
All_mc.lcd_mc.removeChild(vid);
All_mc.lcd_mc.imageHolder_mc.alpha = 1;
remote_mc.playpause_mc.play_mc.visible = true;
remote_mc.playpause_mc.pause_mc.visible = false;
clearInterval(videoLoadedInterval);
videoLoaded = false;
currentState = false;
return;
}// end function
public function loadImage() : void
{
try
{
imageLoader = new Loader();
imageLoader.load(new URLRequest(imageUrl));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, createImage);
}
catch (e:Error)
{
}
return;
}// end function
private function setValues()
{
videoUrl = "video/video1.flv";
imageUrl = "image/image1.jpg";
All_mc.txt.text = "Your Logo";
remote_mc.playpause_mc.pause_mc.visible = false;
mute = false;
latestVolumeVal = 1;
videoLoadedTime = 0;
All_mc.muteDisplay_mc.visible = false;
All_mc.volumeDisplay_mc.visible = false;
All_mc.volumeDisplay_mc.volumeBar_mc.width = latestVolumeVal * 348;
All_mc.seekbarDisplay_mc.visible = false;
muteHideTimer = new Timer(2000, 1);
muteHideTimer.addEventListener(TimerEvent.TIMER, hideMuteDisplay);
volumeHideTimer = new Timer(2000, 1);
volumeHideTimer.addEventListener(TimerEvent.TIMER, hideVolumeDisplay);
seekbarHideTimer = new Timer(2000, 1);
seekbarHideTimer.addEventListener(TimerEvent.TIMER, hideSeekbarDisplay);
stage.addEventListener(FullScreenEvent.FULL_SCREEN, fsEvent);
stage.addEventListener(Event.RESIZE, resizeHandler);
remote_mc.ledOn_mc.alpha = 0;
return;
}// end function
private function hideVolumeDisplay(event:TimerEvent) : void
{
All_mc.volumeDisplay_mc.visible = false;
volumeHideTimer.stop();
return;
}// end function
private function seekDown_mouseDown(event:MouseEvent) : void
{
All_mc.muteDisplay_mc.visible = false;
muteHideTimer.stop();
All_mc.volumeDisplay_mc.visible = false;
volumeHideTimer.stop();
ledon();
ns.pause();
seekDown();
seekbarChangeInterval = setInterval(seekDown, 200);
return;
}// end function
private function metaDataGather(param1:Object) : void
{
realVideoHeight = param1.height;
realVideoWidth = param1.width;
totalVideoTime = param1.duration;
setMovieScale();
return;
}// end function
private function seekDown_mouseUp(event:MouseEvent) : void
{
ns.resume();
if (seekbarChangeInterval)
{
clearInterval(seekbarChangeInterval);
}
seekbarHideTimer.start();
ledoff();
return;
}// end function
private function outButton(event:MouseEvent) : void
{
event.currentTarget.out_mc.alpha = 1;
event.currentTarget.over_mc.alpha = 0;
return;
}// end function
private function updateLoader() : void
{
videoLoadedTime = Math.floor(totalVideoTime * (ns.bytesLoaded / ns.bytesTotal));
return;
}// end function
private function stopdrag(event:MouseEvent) : void
{
remote_mc.stopDrag();
return;
}// end function
function netStatusHandler(event:NetStatusEvent)
{
switch(event.info.code)
{
case "NetStream.Play.StreamNotFound":
{
trace("Unable to locate video");
break;
}
case "NetStream.Play.Stop":
{
videoFinished();
break;
}
case "NetStream.Seek.InvalidTime":
{
break;
}
default:
{
break;
}
}
return;
}// end function
private function volumeUp_mouseDown(event:MouseEvent) : void
{
All_mc.muteDisplay_mc.visible = false;
muteHideTimer.stop();
All_mc.seekbarDisplay_mc.visible = false;
seekbarHideTimer.stop();
ledon();
volumeUp();
volumeChangeInterval = setInterval(volumeUp, 200);
return;
}// end function
private function arrangeFullscreenObjects() : void
{
All_mc.lcd_mc.width = stage.stageWidth;
All_mc.lcd_mc.height = stage.stageHeight;
var _loc_1:int = 0;
All_mc.lcd_mc.y = 0;
All_mc.lcd_mc.x = _loc_1;
var _loc_1:int = 0;
All_mc.y = 0;
All_mc.x = _loc_1;
remote_mc.x = All_mc.lcd_mc.x + All_mc.lcd_mc.width - remote_mc.width - 30;
remote_mc.y = All_mc.lcd_mc.y + All_mc.lcd_mc.height - remote_mc.height - 30;
All_mc.volumeDisplay_mc.x = Math.floor(All_mc.lcd_mc.x + (All_mc.lcd_mc.width - All_mc.volumeDisplay_mc.width) / 2);
All_mc.volumeDisplay_mc.y = All_mc.lcd_mc.y + (All_mc.lcd_mc.height - All_mc.volumeDisplay_mc.height) - 20;
All_mc.seekbarDisplay_mc.y = All_mc.lcd_mc.y + (All_mc.lcd_mc.height - All_mc.seekbarDisplay_mc.height) - 20;
All_mc.seekbarDisplay_mc.x = All_mc.volumeDisplay_mc.x;
All_mc.muteDisplay_mc.x = All_mc.lcd_mc.x + (All_mc.lcd_mc.width - All_mc.muteDisplay_mc.width) - 20;
All_mc.muteDisplay_mc.y = All_mc.lcd_mc.y + 20;
All_mc.txt.visible = false;
return;
}// end function
private function startdrag(event:MouseEvent) : void
{
remote_mc.startDrag();
return;
}// end function
private function clickPlayPause(event:MouseEvent) : void
{
All_mc.lcd_mc.imageHolder_mc.alpha = 0;
if (!videoLoaded)
{
loadVideo();
}
if (currentState)
{
currentState = false;
event.currentTarget.pause_mc.visible = false;
event.currentTarget.play_mc.visible = true;
ns.pause();
}
else
{
currentState = true;
ns.resume();
event.currentTarget.play_mc.visible = false;
event.currentTarget.pause_mc.visible = true;
}
return;
}// end function
private function addButtonsEvents()
{
remote_mc.playpause_mc.buttonMode = true;
remote_mc.playpause_mc.addEventListener(MouseEvent.CLICK, clickPlayPause);
remote_mc.playpause_mc.addEventListener(MouseEvent.MOUSE_DOWN, function ()
{
ledon();
return;
}// end function
);
remote_mc.playpause_mc.addEventListener(MouseEvent.MOUSE_UP, function ()
{
ledoff();
return;
}// end function
);
remote_mc.playpause_mc.play_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.playpause_mc.play_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.playpause_mc.pause_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.playpause_mc.pause_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.fullscreen_mc.buttonMode = true;
remote_mc.fullscreen_mc.addEventListener(MouseEvent.CLICK, clickFullscreen);
remote_mc.fullscreen_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.fullscreen_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.fullscreen_mc.addEventListener(MouseEvent.MOUSE_DOWN, function ()
{
ledon();
return;
}// end function
);
remote_mc.fullscreen_mc.addEventListener(MouseEvent.MOUSE_UP, function ()
{
ledoff();
return;
}// end function
);
remote_mc.remoteBg_mc.buttonMode = true;
remote_mc.remoteBg_mc.addEventListener(MouseEvent.MOUSE_DOWN, startdrag);
remote_mc.remoteBg_mc.addEventListener(MouseEvent.MOUSE_UP, stopdrag);
remote_mc.mute_mc.buttonMode = true;
remote_mc.mute_mc.addEventListener(MouseEvent.CLICK, toggleMute);
remote_mc.mute_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.mute_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.mute_mc.addEventListener(MouseEvent.MOUSE_DOWN, function ()
{
ledon();
return;
}// end function
);
remote_mc.mute_mc.addEventListener(MouseEvent.MOUSE_UP, function ()
{
ledoff();
return;
}// end function
);
remote_mc.volumeUp_mc.buttonMode = true;
remote_mc.volumeUp_mc.addEventListener(MouseEvent.MOUSE_DOWN, volumeUp_mouseDown);
remote_mc.volumeUp_mc.addEventListener(MouseEvent.MOUSE_UP, volumeUp_mouseUp);
remote_mc.volumeUp_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.volumeUp_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.volumeDown_mc.buttonMode = true;
remote_mc.volumeDown_mc.addEventListener(MouseEvent.MOUSE_DOWN, volumeDown_mouseDown);
remote_mc.volumeDown_mc.addEventListener(MouseEvent.MOUSE_UP, volumeDown_mouseUp);
remote_mc.volumeDown_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.volumeDown_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.forward_mc.buttonMode = true;
remote_mc.forward_mc.addEventListener(MouseEvent.MOUSE_DOWN, seekUp_mouseDown);
rem开发者_StackOverflowote_mc.forward_mc.addEventListener(MouseEvent.MOUSE_UP, seekUp_mouseUp);
remote_mc.forward_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.forward_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
remote_mc.rewind_mc.buttonMode = true;
remote_mc.rewind_mc.addEventListener(MouseEvent.MOUSE_DOWN, seekDown_mouseDown);
remote_mc.rewind_mc.addEventListener(MouseEvent.MOUSE_UP, seekDown_mouseUp);
remote_mc.rewind_mc.addEventListener(MouseEvent.MOUSE_OVER, overButton);
remote_mc.rewind_mc.addEventListener(MouseEvent.MOUSE_OUT, outButton);
return;
}// end function
private function seekUp_mouseDown(event:MouseEvent) : void
{
All_mc.muteDisplay_mc.visible = false;
muteHideTimer.stop();
All_mc.volumeDisplay_mc.visible = false;
volumeHideTimer.stop();
ledon();
seekUp();
seekbarChangeInterval = setInterval(seekUp, 100);
return;
}// end function
private function volumeDown() : void
{
volumeHideTimer.stop();
if (ns.soundTransform.volume > 0)
{
if (ns.soundTransform.volume - 0.1 <= 0)
{
ns.soundTransform = new SoundTransform(0);
latestVolumeVal = 0;
}
else
{
ns.soundTransform = new SoundTransform(ns.soundTransform.volume - 0.1);
latestVolumeVal = ns.soundTransform.volume;
}
}
All_mc.volumeDisplay_mc.volumeBar_mc.width = latestVolumeVal * 348;
All_mc.volumeDisplay_mc.visible = true;
return;
}// end function
private function seekUp_mouseUp(event:MouseEvent) : void
{
if (seekbarChangeInterval)
{
clearInterval(seekbarChangeInterval);
}
seekbarHideTimer.start();
ledoff();
return;
}// end function
private function overButton(event:MouseEvent) : void
{
event.currentTarget.over_mc.alpha = 1;
event.currentTarget.out_mc.alpha = 0;
return;
}// end function
private function ledon() : void
{
remote_mc.ledOn_mc.alpha = 1;
remote_mc.ledOff_mc.alpha = 0;
return;
}// end function
private function seekUp() : void
{
if (ns.time < totalVideoTime)
{
if (ns.time + 2 >= videoLoadedTime)
{
ns.seek(videoLoadedTime);
}
else
{
ns.seek(ns.time + 2);
}
}
All_mc.seekbarDisplay_mc.seekbar_mc.width = ns.time / totalVideoTime * 348;
All_mc.seekbarDisplay_mc.visible = true;
return;
}// end function
private function loadVideo() : void
{
videoLoaded = true;
nc.connect(null);
ns = new NetStream(nc);
vid = new Video();
ns.client = new Object();
ns.bufferTime = 3;
ns.play(videoUrl);
ns.client.onMetaData = metaDataGather;
ns.pause();
vid.attachNetStream(ns);
vid.smoothing = true;
All_mc.lcd_mc.addChild(vid);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
ns.soundTransform = new SoundTransform(latestVolumeVal);
videoLoadedInterval = setInterval(updateLoader, 100);
return;
}// end function
private function volumeUp_mouseUp(event:MouseEvent) : void
{
if (volumeChangeInterval)
{
clearInterval(volumeChangeInterval);
}
volumeHideTimer.start();
ledoff();
return;
}// end function
private function seekDown() : void
{
if (ns.time > 0)
{
if (ns.time - 2 <= 0)
{
ns.seek(0);
}
else
{
ns.seek(ns.time - 2);
}
}
All_mc.seekbarDisplay_mc.seekbar_mc.width = ns.time / totalVideoTime * 348;
All_mc.seekbarDisplay_mc.visible = true;
return;
}// end function
private function volumeDown_mouseDown(event:MouseEvent) : void
{
All_mc.muteDisplay_mc.visible = false;
muteHideTimer.stop();
All_mc.seekbarDisplay_mc.visible = false;
seekbarHideTimer.stop();
ledon();
volumeDown();
volumeChangeInterval = setInterval(volumeDown, 200);
return;
}// end function
private function readFlashVars()
{
var paramObj:Object;
try
{
paramObj = stage.loaderInfo.parameters;
if (paramObj.videoUrl != null)
{
videoUrl = paramObj.videoUrl;
}
if (paramObj.imageUrl != null)
{
imageUrl = paramObj.imageUrl;
}
if (paramObj.tvName != null)
{
All_mc.txt.text = paramObj.tvName;
}
if (paramObj.screenHeight != null)
{
screenHeight = paramObj.screenHeight;
}
if (paramObj.screenWidth != null)
{
screenWidth = paramObj.screenWidth;
}
}
catch (error:Error)
{
}
return;
}// end function
private function volumeUp() : void
{
if (mute)
{
mute = false;
}
volumeHideTimer.stop();
if (ns.soundTransform.volume < 1)
{
if (ns.soundTransform.volume + 0.1 >= 1)
{
ns.soundTransform = new SoundTransform(1);
latestVolumeVal = 1;
}
else
{
ns.soundTransform = new SoundTransform(ns.soundTransform.volume + 0.1);
latestVolumeVal = ns.soundTransform.volume;
}
}
All_mc.volumeDisplay_mc.volumeBar_mc.width = latestVolumeVal * 348;
All_mc.volumeDisplay_mc.visible = true;
return;
}// end function
private function clickFullscreen(event:MouseEvent) : void
{
if (stage.displayState == StageDisplayState.NORMAL)
{
stage.displayState = StageDisplayState.FULL_SCREEN;
}
else
{
stage.displayState = StageDisplayState.NORMAL;
}
return;
}// end function
private function ledoff() : void
{
remote_mc.ledOn_mc.alpha = 0;
remote_mc.ledOff_mc.alpha = 1;
return;
}// end function
private function hideSeekbarDisplay(event:TimerEvent) : void
{
All_mc.seekbarDisplay_mc.visible = false;
seekbarHideTimer.stop();
return;
}// end function
private function toggleMute(event:MouseEvent) : void
{
All_mc.volumeDisplay_mc.visible = false;
volumeHideTimer.stop();
if (mute)
{
mute = false;
muteHideTimer.stop();
All_mc.muteDisplay_mc.muteOn_mc.alpha = 0;
All_mc.muteDisplay_mc.visible = true;
ns.soundTransform = new SoundTransform(latestVolumeVal);
muteHideTimer.start();
}
else
{
muteHideTimer.stop();
latestVolumeVal = ns.soundTransform.volume;
All_mc.muteDisplay_mc.muteOn_mc.alpha = 1;
All_mc.muteDisplay_mc.visible = true;
mute = true;
ns.soundTransform = new SoundTransform(0);
}
return;
}// end function
private function volumeDown_mouseUp(event:MouseEvent) : void
{
if (volumeChangeInterval)
{
clearInterval(volumeChangeInterval);
}
volumeHideTimer.start();
ledoff();
return;
}// end function
private function arrangeObjects()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
All_mc.x = All_mc.stage.stageWidth / 2 - (screenWidth + 40) / 2;
All_mc.y = All_mc.stage.stageHeight / 2 - (screenHeight + 55) / 2;
var _loc_1:int = 20;
All_mc.lcd_mc.y = 20;
All_mc.lcd_mc.x = _loc_1;
All_mc.lcd_mc.scree_bg.width = screenWidth;
All_mc.lcd_mc.scree_bg.height = screenHeight;
var _loc_1:int = 0;
All_mc.tv_bg.y = 0;
All_mc.tv_bg.x = _loc_1;
All_mc.tv_bg.width = screenWidth + 40;
All_mc.tv_bg.height = screenHeight + 55;
All_mc.foot_mc.y = All_mc.tv_bg.height - 12;
All_mc.foot_mc.x = Math.floor((All_mc.tv_bg.width - All_mc.foot_mc.width) / 2);
All_mc.txt.visible = true;
All_mc.txt.y = All_mc.lcd_mc.y + screenHeight + 5;
All_mc.txt.x = All_mc.tv_bg.x + Math.floor((All_mc.tv_bg.width - All_mc.txt.textWidth) / 2);
remote_mc.x = All_mc.x + (screenWidth + 40) - remote_mc.width;
remote_mc.y = All_mc.y + (screenHeight + 55) - remote_mc.height;
All_mc.volumeDisplay_mc.x = Math.floor(All_mc.lcd_mc.x + (screenWidth - All_mc.volumeDisplay_mc.width) / 2);
All_mc.volumeDisplay_mc.y = All_mc.lcd_mc.y + (screenHeight - All_mc.volumeDisplay_mc.height) - 20;
All_mc.seekbarDisplay_mc.y = All_mc.lcd_mc.y + (screenHeight - All_mc.seekbarDisplay_mc.height) - 20;
All_mc.seekbarDisplay_mc.x = All_mc.volumeDisplay_mc.x;
All_mc.muteDisplay_mc.x = All_mc.lcd_mc.x + (screenWidth - All_mc.muteDisplay_mc.width) - 20;
All_mc.muteDisplay_mc.y = All_mc.lcd_mc.y + 20;
return;
}// end function
private function fsEvent(event:FullScreenEvent)
{
if (stage.displayState == StageDisplayState.NORMAL)
{
arrangeObjects();
All_mc.lcd_mc.width = screenWidth;
All_mc.lcd_mc.height = screenHeight;
}
else
{
arrangeFullscreenObjects();
}
return;
}// end function
private function hideMuteDisplay(event:TimerEvent) : void
{
All_mc.muteDisplay_mc.visible = false;
muteHideTimer.stop();
return;
}// end function
private function createImage(event:Event) : void
{
var _loc_2:Bitmap = null;
_loc_2 = Bitmap(imageLoader.contentLoaderInfo.content);
_loc_2.smoothing = true;
_loc_2.width = screenWidth;
_loc_2.height = screenHeight;
All_mc.lcd_mc.imageHolder_mc.addChild(_loc_2);
return;
}// end function
private function setMovieScale() : void
{
if (screenWidth / screenHeight >= realVideoWidth / realVideoHeight)
{
vid.height = screenHeight;
vid.width = realVideoWidth / realVideoHeight * screenHeight;
vid.x = (screenWidth - vid.width) / 2;
vid.y = 0;
}
else
{
vid.width = screenWidth;
vid.height = realVideoHeight / realVideoWidth * screenWidth;
vid.y = (screenHeight - vid.height) / 2;
vid.x = 0;
}
return;
}// end function
function resizeHandler(event:Event) : void
{
All_mc.x = All_mc.stage.stageWidth / 2 - All_mc.width / 2;
All_mc.y = All_mc.stage.stageHeight / 2 - All_mc.height / 2;
return;
}// end function
}
}
I managed to get it to display properly, but now I was wondering if anyone could help me to get the video to play automatically, I've tried
<param name="autoPlay" value="true" />
<param name="autoStart" value="true" />
but they dont work, I'm not sure how to edit the ActionScript to make it play automatically..
精彩评论