The other day, friends were asking me how to do full screen popup for flash. So here I am with a simple demo for creating a full screen swf popup. (Note: the full screen popup can only be trigger by a generic mouse click only.)
Time for some coding... The main as file for the swf - Main.aspackage com.zcs
{
import flash.events.Event;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.display.StageDisplayState;
public class Main extends InterfaceSetup implements IInterfaceSetup
{
private var _top_mc:MovieClip;
private var _bottom_mc:MovieClip;
private var _left_mc:MovieClip;
private var _right_mc:MovieClip;
private var _cover_mc:MovieClip;
public function Main():void
{
// constructor code
}
//Override the stage variables
override public function setupStageEvent(event:Event):void
{
super.setupStageEvent(event);
stageWidthF = 600;
stageHeightF = 400;
_top_mc = this.getChildByName("top_mc") as MovieClip;
_bottom_mc = this.getChildByName("bottom_mc") as MovieClip;
_left_mc = this.getChildByName("left_mc") as MovieClip;
_right_mc = this.getChildByName("right_mc") as MovieClip;
_cover_mc = this.getChildByName("cover_mc") as MovieClip;
_cover_mc.buttonMode = true;
_cover_mc.addEventListener(MouseEvent.CLICK, clickEvent);
resizeEvent();
}
//Upon Screen Resize....
override public function resizeEvent(event:Event = null):void
{
//Scale and position the MovieClip accordingly
resizeSubFunc(_top_mc, "50%", "l", "0", "t", 1);
resizeSubFunc(_bottom_mc, "50%", "l", "0", "b", 1);
resizeSubFunc(_left_mc, "0", "l", "50%", "t", 1);
resizeSubFunc(_right_mc, "0", "r", "50%", "t", 1);
resizeSubFunc(_cover_mc, "0", "l", "0", "t", 1);
}
private function clickEvent(event:Event):void
{
toggleFullScreen();
}
private function toggleFullScreen():void
{
//if normal size, go to fullscreen, else go to normal size
if(stage.displayState==StageDisplayState.NORMAL){
stage.displayState=StageDisplayState.FULL_SCREEN;
}else{
stage.displayState=StageDisplayState.NORMAL;
}
}
}
}
This is an simple as file that I have been using for reusing some screen resize functions - InterfaceSetup.as
package com.zcs
{
import flash.display.MovieClip;
import flash.events.*;
import flash.system.*;
import flash.external.*;
public class InterfaceSetup extends MovieClip implements IInterfaceSetup
{
public var stageWidthF;
public var stageHeightF;
public function InterfaceSetup():void
{
this.addEventListener(Event.ADDED_TO_STAGE, setupStageEvent);
}
//setup the stage after this is added to stage and listen for resize of flash file
public function setupStageEvent(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, setupStageEvent);
stageWidthF = 1024;
stageHeightF = 768;
stage.addEventListener(Event.RESIZE, resizeEvent);
}
//resize event
public function resizeEvent(event:Event = null):void
{
}
//sub resize function that requires the following variables
//tempMC = the movieclip lo :P
//tempPosX, the x position (ex: 0 || 50%)
//Hdir, from l (left) or r (right)
//tempPosY, the y position (ex: 0 || 50%)
//Vdir, from t (top) or b (bottom)
public function resizeSubFunc(tempMC,tempPosX,Hdir,tempPosY,Vdir,scaleByScreen = 0):void
{
var strArray;
if(scaleByScreen == 1){
tempMC.scaleX = (stage.stageWidth/stageWidthF) * 1;
tempMC.scaleY = (stage.stageHeight/stageHeightF) * 1;
}else if(scaleByScreen == -1){
tempMC.scaleX = (stage.stageHeight/stageHeightF) * 1;
tempMC.scaleY = (stage.stageWidth/stageWidthF) * 1;
}
if(Hdir == "l"){
tempMC.x = -1 * ((stage.stageWidth - stageWidthF) / 2);
if(String(tempPosX).indexOf("%") != -1)
{
strArray = String(tempPosX).split("%");
tempMC.x += (int(strArray[0])/100) * stage.stageWidth;
}else{
tempMC.x += Number(tempPosX);
}
}else{
tempMC.x = stageWidthF + ((stage.stageWidth - stageWidthF) / 2);
if(String(tempPosX).indexOf("%") != -1)
{
strArray = String(tempPosX).split("%");
tempMC.x -= (int(strArray[0])/100) * stage.stageWidth;
}else{
tempMC.x -= Number(tempPosX);
}
}
if(Vdir == "t"){
tempMC.y = -1 * ((stage.stageHeight - stageHeightF) / 2);
if(String(tempPosY).indexOf("%") != -1)
{
strArray = String(tempPosY).split("%");
tempMC.y += (int(strArray[0])/100) * stage.stageHeight;
}else{
tempMC.y += Number(tempPosY);
}
}else{
tempMC.y = stageHeightF + ((stage.stageHeight - stageHeightF) / 2);
if(String(tempPosY).indexOf("%") != -1)
{
strArray = String(tempPosY).split("%");
tempMC.y -= (int(strArray[0])/100) * stage.stageHeight;
}else{
tempMC.y -= Number(tempPosY);
}
}
tempMC.x = Math.ceil(tempMC.x);
tempMC.y = Math.ceil(tempMC.y);
}
}
}
A simple Interface file - IInterfaceSetup.as
package com.zcs
{
import flash.events.Event;
public interface IInterfaceSetup
{
// Interface methods:
function setupStageEvent(event:Event):void;
function resizeEvent(event:Event = null):void;
}
}
Main HTML file - main.html
<html>
<head>
<style type="text/css">
<!--
html{height:100%}
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
background-color: #000;
}
#flashContent {width:100%;height:100%;}
-->
</style>
<!-- Include support librarys first -->
<script type="text/javascript" src="jsScript/swfobject.js"></script>
<script type="text/javascript" src="jsScript/swfforcesize.js"></script>
<script type="text/javascript" src="jsScript/swfaddress.js?tracker=null"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%">
<tr><td align="center">
<div id="flashContent">
<h1>You need at least Flash Player 10.0 to view this page.</h1>
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
<script type="text/javascript">
function createSWF(){
var now=new Date();
now = Date.UTC(now.getYear(),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds());
var swfURL = "swf/main.swf?date=" + now;
var flashvars = {};
var params = {bgcolor:"#FFFFFF"};
//Need to set allowfullscreen to "true"
params.allowfullscreen = "true";
//By changing scale to "exactFit" will make the swf
//fill up all the spaces in the browser window
params.scale = "exactFit";
var attributes = {};
attributes.name = "flashContent";
swfobject.embedSWF(swfURL, "flashContent", "100%", "100%", "10.0.2", null, flashvars, params, attributes);
}
createSWF();
</script>
</td></tr></table>
</body>
</html>
* Click here for the demo.(Click on any part of the flash file to show the full screen popup.)
^ Click here for the source files of the demo.
No comments:
Post a Comment