FLASH+JS做的全屏效果及AS集錦

來源:互聯網
上載者:User
js
一、需求分析:
1:全屏頁面解析度需為 1024*768 如果低於此解析度,畫面精細的效果得不到體現。所以應該限制此分辯率以下的作業系統訪問此介面。
2:開啟的全屏視窗應該右上方有最小化、關閉按扭。
3:每個載入的視窗應該可以移動、關閉、最小化。
4:案頭上的表徵圖可以拖動,雙擊。
5:螢幕底部有一個工作列,當滑鼠移至螢幕底部,工作列從底部彈出。可以用一個按扭使其退回螢幕底部。

二、技術要點:

Java Script:
Screen 對象 (object):
該對象具有以下屬性(Properties):
availHeight [有效高度], (有效高度=高度-工作列高度)
availWidth [有效寬度],
bufferDepth [緩衝區大小],
colorDepth[色彩深度],
height [高度],
width [寬度],
updateInterval [更新間隔],


Window 對象 (object):
該對象具有以下屬性(Properties):
clientInformation[用戶端資訊], closed [已關閉],
defaultStatus[預設狀態],

dialogArguments [會話框返回數組],
dialogHeight [會話框高度], dialogLeft [會話框距螢幕左],
dialogTop[會話框距螢幕頂], dialogWidth[會話框寬度],
(以上5 個屬性只適用於己於人showModalDialog() 建立的形式會話框)
document[文檔],
event[事件],
history[曆史],
length*[長度],
location[位置],
name[名稱],
navigator[瀏覽器],
offscreenBuffering [關閉螢幕緩衝 Y/N ],
opener [script 開視窗都有opener 指向開這個的視窗 你自己開的瀏覽器就是空的
window.close 根據這個判斷的是否提示]
parent*,[父視窗]
returnValue[傳回值],
screen[螢幕],
self[自身],
status[狀態],
top* [是否頂視窗]

*An asterisk indicates properties not applicable to modal dialogs.
帶*號的屬性不可用於 modal dialogs (由 showModalDialog() 建立的形式會話框).

Collections (集合)

frames* [架構]

方法(Methods):

alert[警告],
blur[最小化],
clearInterval [取消間隔],
clearTimeout[清除逾時設定],
close[關閉],
confirm [確定] (object.confirm([message]) 是否確定?此函數將返回一個邏輯值 ),
execScript[執行代碼],
focus[聚焦],
moveBy[相對移動],
moveTo[移動到],
navigate[導航 =window.location.href 本地URL ],
open* [開啟],
prompt [提示],
resizeBy [相對縮放],
resizeTo [縮放到],
scroll[捲動],
scrollBy[相對捲動],
scrollTo[捲動到],
setInterval[設定間隔],
setTimeout[設定逾時],
showHelp[顯示協助],
showModalDialog* [顯示形式會話框]

*An asterisk indicates properties not applicable to modal dialogs.
帶*號的屬性不可用於 modal dialogs (由 showModalDialog() 建立的形式會話框).

事件(Events):

onbeforeunload[關閉前],
onblur[最小化],
onerror[錯誤],
onfocus[得到焦點],
onhelp[協助],
onload[載入],
onresize[縮放],
onscroll[捲動],
onunload [關閉]





flash Action Script:

on (press [按], release [釋放], releaseOutside [外部釋放],
rollOver [滑過] , rollOut [滑離], dragOver [拖過], dragOut [拖離],
keyPress "" [按鍵])

GetUrl [轉到串連] ("javascript :self.close()");
StratDrag("MovieClip"); [開始拖曳]
StopDrag("MovieClip"); [停止拖曳]
loadMovie("*.swf", "MovieClip"); [載入影片到MovieClip]
LoadmovieNum ("*.swf",n); [載入影片到第n層]
UnLoadmovie("*.swf"); [卸載影片]
play()[播放]; stop()[停止];

pc_today=new Date();[建立日期對象]
pc_today.getHours();[時]
pc_today.getMinutes();[分]
pc_today.getTime();[秒]

.getBytesLoaded();[已載入位元組數]
.getBytesTotal();[需載入的位元組總數]
_root.getBytesTotal 表示當前SWF檔案的位元組數.

on(release){
getURL("javascript :self.close()"); // [轉到串連]
}
執行JS代碼,關閉當前視窗,同樣的
getURL("javascript :self.blur()");
可以使當前視窗最小化.


三、程式碼
1,控制在1024*768 解析度以上可以開啟全屏的 JS代碼。
將此代碼放入 <Body></Body> 區。
<script language="JavaScript" type="text/JavaScript">
<!--
function cc_openBrWindow(theURL,winName,features)
{ //v2.0
if(screen.width>=1024 && screen.height>=768)
{
window.open(theURL,winName,features);
}
else
{
alert("請將解析度調至 1024 * 768 以上獲得最佳顯示效果.^_^!")
}
}
//-->
</script>
<a href="#"><IMG SRC="http://www.webjx.com/htmldata/2005-02-26/image/index_06.gif" ALT="Enter The Flash SITE! Best View Mode 1024*768*24 bit." WIDTH=209 HEIGHT=53 border="0" ></a>


2,Flash 中測試mp3 載入百分比的 AS:
說明:主情境中有一名為loadmp3 的 MovieClip .用於載入 mp3 轉成的SWF 檔案,也可直接載入mp3.

做一個 100 幀的 loading MovieClip 名為loading_mv .
做一個兩幀的無圖象的MovieClip 名為loading_mv_test .

第一幀代碼如下:
mp3loaded = _root.loadmp3.getBytesLoaded();
mp3total = _root.loadmp3.getBytesTotal();
mp3percent = 0;
if (mp3total>1000 && mp3loaded>10) {
//當主情境中的 loadmp3 沒有載入影片 mp3loaded的值為1 ,而不為0 ;
//因為有一個位元組來表示這個 MovieClip
mp3percent = int (mp3loaded/mp3total*100);
_parent.gotoAndstop(mp3percent);
} else {
_parent.gotoAndstop(1);
}
pctoday = new Date();
pctime = pctoday.getHours() add ":" add pctoday.getMinutes() add ":" add pctoday.getSeconds();
//在情境中建立一個動態文字物件,變數名為pctime, 就可以即時顯示系統時間了。

第二幀代碼如下:
gotoandplay(1);

3,案頭表徵圖的主要代碼:

on (press) {
startDrag("");
}
on (release) {
stopDrag();
frame = time._currentframe;
if (settime == 0) {
//settime ==0 表示還沒有開始計時。settime ==1 表示已經開始計時。
time.gotoandplay(1);
settime = 1;
}
//開使記時,設定記時位 settime .
if (settime == 1 && frame<=6) {
//開始計時的6幀以內,(0.5S) 再次釋放滑鼠。
loadMovie("000.jpg", "_root.picback.bak");
//也可以換成其他動作。
} else {
settime = 0; //計時位複位。
}
}

//time 為一個二十幀的 MovieClip,
//在二十幀的as 為 stop();

四、原檔案


點擊瀏覽該檔案
********************************
自己日常收集的和自己做的,給大家分享!
部分沒有自己考究過,如果有錯,請指出!


設定首頁代碼:

on (release) {
geturl("javascript :document.body.style.behavior=\"url(#default#homepage)\";document.body.sethomepage(\"http://www.flash8.net
")", "_self");
}

加為收藏代碼:


on (release) {
geturl("javascript :window.external.addfavorite(\"http://www.flash8.net\")", "_self");
}


判斷輸入是否為數位函數:


on(release){
if(Number(pass)==NaN){//判斷輸入是否為數字
pass="";
}



檢查E-MAIL的函數:

function checkemail(email) {
var str = new String(email);
var arr_email = str.split("@");
if ((arr_email.length != 2) || (arr_email[1].indexOf(".")<1)) {
return (false);
} else {
return (true);
}
}


延時函數:

function showTime(second, option) {
//延時函數
this.createEmptyMovieClip("t_mc", 9999);
t = getTimer();
f = false;
if ((getTimer()-t)>(second*1000)) {
option();
}
}
function go() {
//加入效果
jpg2._y = jpg2._y+77;
jpg2._alpha = jpg2._alpha-15;
}
fscommand("fullscreen", "true");
createEmptyMovieClip("jpg1", 1);
createEmptyMovieClip("jpg2", 2);
jpg1.loadMovie("1.jpg");
jpg2.loadMovie("2.jpg");
i = 0;
while (i<=100) {
showTime(0.1, go);
i = i+20;
}



FLASH中的保留小數的函

int(你的數*10)/10;
這樣是保留一位
乘上100就是兩位。以此類推



FLASH指令碼實現關機

flash5:
fscommand ("exec","rundll"+chr(9)+"user.exe,exitwindows");





滑鼠雙擊問題!

lsn_DbClick = new Object();
lsn_key = new Object();
lsn_DbClick.onMouseDown = function() {
clickTime = getTimer();
if (clickTime-lastClickTime<=300) {
trace("雙擊了滑鼠");
}
lastClickTime = clickTime;
};
Mouse.addListener(lsn_DbClick);
time = getTimer()-down_time;
if (time<300) {
//雙擊後的代碼部分
}
down_time = getTimer();
怎樣在從另一個swf中擷取變數

loadMovieNum("vars.swf", 1["POST"]);
_root.onEnterFrame = function() {
trace(_level1.myvab);
};
//當載入完畢後,輸出就有值了...


滑鼠右鍵及滾輪的代碼


if Key.isDown(2){},(左鍵的代碼是1)

左鍵:Key.isToggled(1)
右鍵:Key.isToggled(2)
滾輪:Key.isToggled(4)
滾輪1:Key.isToggled(4) PC機上用
滾輪2:Key.isToggled(3) MAC機上用
未知:Key.isToggled(3)
this.onEnterFrame = function() {
if (Key.isDown(2)){
trace("asdfjsdjkf");
}
}






實現TAB功能

獲得焦點
使用Selection.setfocus()函數
舉個例子:
例如你在主影片中有N個文字框,變數分別為text1,text2.....你想使影片一播放就把焦點落到第一個
文字框你就在第一FRAME 加AS如下:
Selection.setfocus("_root.text1");

我們可以舉一反三


實現TAB功能 二

把這個N個文字框做組成一個數組
numarray=new array("_root.text1","_root.text2",....................."_root.textn");
首先獲得滑鼠焦點
x=Selection.getfocus();/* x 獲得滑鼠焦點的一個字串
for(i=0;i<=n;i++)
{
if(numarray[i]==x){
num=i; /*獲得當前焦點在數組中的位置
}
然後編寫TAB鍵功能
on (keyPress "<TAB>") {
if (num==n){num=0;}
else{num++;}

Selection.setfocus(numarray[num]);

}
按鈕能像window那樣用Tab鍵來轉換選擇
用button.onKillFoucus


*兩點間畫直線
*畫螺旋線
*畫正方形、圓、橢圓
*拋物線
*正弦、餘弦線

使用方法:加到幀中就可


// 畫直線
// / x1, y1: 起點座標
// x2, y2: 終點座標
// k是層次
Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) {
this.linestyle(1);
this.moveTo(x1, y1);
this.lineTo(x2, y2);
};
// 從(0,0)到(100,100)畫一條線
_root.createEmptyMovieClip("mc", 10);
mc.drawline(0, 0, 100, 100);
// 畫螺旋線
// w、h為寬和高
// f控制線的長短,用弧度表示
Movieclip.prototype.drawhelix = function(w, h, f) {
for (var i = 0; i<f; i += 0.05) {
this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h);
this.linestyle(1);
}
};
// 以(100,100)為中心畫螺旋線
_root.createEmptyMovieClip("luo", 1);
with (luo) {
drawhelix(5, 5, 13);
_x += 100;
_y += 100;
}
 ,; // 多功能函數,可畫圓,橢圓,正多邊形等
// n為邊數
Movieclip.prototype.drawmany = function(w, h, n) {
f = 2*Math.PI;
for (var i = 0; i<=f/n*(n+1); i += f/n) {
this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h);
this.linestyle(1);
}
};
// 畫一正五邊形
_root.createEmptyMovieClip("duobian", 2);
with (duobian) {
drawmany(50, 50, 5);
_x += 250;
_y += 100;
// 5為多邊形的邊數,6.3為2pai
}
// 畫一橢圓
_root.createEmptyMovieClip("tuo", 3);
with (tuo) {
drawmany(25, 50, 100);
_x += 400;
_y += 100;
}
// 圓
_root.createEmptyMovieClip("yuan", 4);
with (yuan) {
drawmany(50, 50, 100);
_x += 400;
_y += 300;
}
// 拋物線
Movieclip.prototype.drawparabola = function(l, r, k) {
for (var i = -l; i<=r; i += 1) {
this.lineTo(x=i, y=k*i*i);
this.linestyle(1);
}
};
// 調用
_root.createEmptyMovieClip("parabola", 100);
with (parabola) {
drawparabola(50, 50, 0.05);
_x += 200;
_y += 200;
// 頂點座標
}
// 正弦線,餘弦類似
Movieclip.prototype.drawsin = function(n, k) {
for (var i = 0; i<=90*n; i += 1) {
this.lineTo(x=i, y=k*Math.sin(i*Math.PI/180));
this.linestyle(1);
}
};
_root.createEmptyMovieClip("sin", 101);
with (sin) {
drawsin(4, 50);
_x += 200;
_y += 200;
// 頂點座標
}
Movieclip.prototype.drawwave = function(w, h) {
for (var i = 0; i<=6.3; i += 0.01) {
this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i));
this.linestyle(1);
}
};
_root.createEmptyMovieClip("wave", 105);
with (wave) {
drawwave(100, 100);
_x += 200;
_y += 200;
// 頂點座標
}

一個動態文本設定alpha函數。

function setAlpha(obj,alpha){
var rgb="0x"+(255*(100-alpha)/100).toString(16);
rgb=rgb<<16|rgb<<8|rgb;
obj.backgroundColor|=rgb;
obj.borderColor|=rgb;
obj.textColor|=rgb; }



一個遍曆level0中所有MC的instance name的函數。(可以修改一下用在其他範疇)



function readAllMC(){
this.MCitem ;
for(what in _level0){
if(typeof(_level0[what])=="movieclip"){
this.MCitem[what] = _level0[what];
}
}
}







設定MovieClip顏色:

MovieClip.prototype.setColor = function(c_color)
{
var mycolor = new Color(this);
mycolor.setRGB(c_color);
};
//調用:
yourMovieClip.setColor(0xff0000);



怎樣設as,拒絕影片被人用loadMovie匯入

以下as一定要設在最上層楨動作第一行有效
_root._name = "nn";
this.onEnterFrame = function() {
if (this._name != "nn" || _root.getDepth() != -16384) {
this.unloadMovie();
}
};
                                   來源: 閃吧


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。