加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【Flash】Flash控制JS动作、JS控制Flash动作

发布时间:2020-12-15 18:14:28 所属栏目:百科 来源:网络整理
导读:【1】Flash控制JS动作 //Flash里的ActionScript: import flash.events.MouseEvent;import flash.external.ExternalInterface; function myCall(e:MouseEvent){ var intxt = inputa.text; var inwid = inputa.length; ExternalInterface.call("fCallJs",intx
【1】Flash控制JS动作

//Flash里的ActionScript:
import flash.events.MouseEvent;
import flash.external.ExternalInterface;
 
function myCall(e:MouseEvent){
    var intxt = inputa.text; 
    var inwid = inputa.length;
    ExternalInterface.call("fCallJs",intxt,inwid); 
}
 
btn.addEventListener(MouseEvent.CLICK,myCall);

//网页里接受的JavaScript:
<script type="text/javascript" >
   function fCallJs(aaa,bbb){
    alert(aaa+","+bbb);
   };
</script>

//注意几点:
1、如果用Jquery,不要把此 function 放在自执行的$( ($) {});里面,否则不运行。
2、如果在本地测试(没用IIS),需要把Flash安全设置里的高级设置,把此swf设为信任文件,才能看到效果。建议用IIS架个测试网站看。


=======================================================

【2】JS控制Flash动作

//比如在网页里的Flash标签是:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0" width="550" height="400" id="Test" align="middle">  
<param name="allowScriptAccess" value="sameDomain" />  
<param name="movie" value="Test.swf" />  
<param name="quality" value="high" />  
<param name="bgcolor" value="#ffffff" />  
<embed src="Test.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="Test" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />  
</object>  

//网页JavaScript:
<script type="text/javascript" >
        $(function($) {
               $("#go").click(function(){
	  	  var myFlash = getFlashMovieObject("Test");
		  myFlash.TPlay("star");//在此Flash里有个叫star的电影片段
		});
	});
		   
	 function getFlashMovieObject(movieName) {  //这个是为了让所有浏览器能获取到Flash的ID
              if (window.document[movieName]){  
                     return window.document[movieName];     
              }  
              if (navigator.appName.indexOf("Microsoft Internet")==-1) {  
                     if (document.embeds && document.embeds[movieName]) 
                            return document.embeds[movieName];    
              } else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)     
              {      
                     return document.getElementById(movieName);     
               }   
         } 
</script>


//所有JS控制Flash的参数:(注意大小写)Play() ---------------------------------------- 播放动画?
StopPlay()------------------------------------停止动画?
IsPlaying()----------------------------------- 动画是否正在播放?
GotoFrame(frame_number)---------------- 跳转到某帧?
TotalFrames()------------------------------- 获取动画总帧数?
CurrentFrame()------------------------------回传当前动画所在帧数-1?
Rewind()-------------------------------------使动画返回第一帧?
SetZoomRect(left,top,right,buttom)-------放大指定区域?
Zoom(percent)------------------------------改变动画大小?
Pan(x_position,y_position,unit)------------使动画在x,y方向上平移?
PercentLoaded()----------------------------返回动画被载入的百分比?
LoadMovie(level_number,path)----------- 加载动画?
TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数?
TGotoLabel(movie_clip,label_name)------ movie_clip跳转到指定标签?
TCurrentFrame(movie_clip)--------------- 回传movie_clip当前帧-1?
TCurrentLabel(movie_clip)-----------------回传movie_clip当前标签?
TPlay(movie_clip)---------------------------播放movie_clip?
TStopPlay(movie_clip)----------------------停止movie_clip的播放?
GetVariable(variable_name)-----------------获取变量?
SetVariable(variable_name,value)-----------变量赋值?
TCallFrame(movie_clip,frame_number)---call指定帧上的action?
TCallLabel(movie_clip,label)----------------call指定标签上的action?
TGetProperty(movie_clip,property)--------获取movie_clip的指定属性?
TSetProperty(movie_clip,property,number)-设置movie_clip的指定属性
其中TGetProperty 和 TSetProperty 的属性是使用数字0-18来获取的,下面是各数字代表的属性:
属性 作用 数字 使用方式
X Position X坐标 0 Get,Set?
Y Position Y坐标 1 Get,Set?
X Scale X方向缩放比率 2 Get,Set?
Y Scale Y方向缩放比率 3 Get,Set?
CurrentFrame movie_clip当前所在帧数 4 Get?
TotalFrames movie_clip总帧数 5 Get?
Alpha movie_clip的透明度 6 Get,Set?
Visibility movie_clip是否可见 7 Get,Set?
Width movie_clip的宽度 8 Get?
Height movie_clip的高度 9 Get?
Rotation movie_clip的旋转度 10 Get,Set?
Target movie_clip的路径 11 Get?
Framesloaded movie_clip已载入的帧数 12 Get?
Name movie_clip的实体名字 13 Get,Set?
DropTarget movie_clip的拖拽 14 Get?
Url 包含movie_clip的动画的url 15 Get?
HighQuality 设置画面质量为高质量 16 Get,Set?
FocusRect 显示按钮边框 17 Get,Set?
SoundBufTime 预设声音缓冲时间 18 Get,Set?

============================================================

感谢http://blog.csdn.net/feb13/article/details/7691793

【3】JS调用Flash里的函数

AS3

import flash.external.ExternalInterface;

ExternalInterface.addCallback("jsf",asf);
//允许js调用flash中的函数 参数1:要调用flash函数的js函数,参数2:被调用flash函数?
function asf(vvv){ ?
? ? ? inputa.text = vvv;
} ?

JQUERY
$(document).ready(function() {
	var myFlash = getFlashMovieObject("Test");
	$("#go2").click(function(){
? ? ? ? ? ? ?var aaa = $("#input01").val();
? ? ? ? ? ? ?myFlash.jsf(aaa);
? ? ? ? });
});

function getFlashMovieObject(movieName) {  
     if (window.document[movieName]){  
           return window.document[movieName];     
     }  
     if (navigator.appName.indexOf("Microsoft Internet")==-1) {  
          if (document.embeds && document.embeds[movieName]) 
                return document.embeds[movieName];    
     }else{      
          return document.getElementById(movieName);     
     }   
} 

或者在JQUERY里这样
function getFlashMovieObject(movieName) {  
     if (window.document[movieName]){  
           return window.document[movieName];     
     }  
     if (navigator.appName.indexOf("Microsoft Internet")==-1) {  
          if (document.embeds && document.embeds[movieName]) 
                return document.embeds[movieName];    
     }else{      
          return document.getElementById(movieName);     
     }   
} 

function jsf(aaa) {
	var myFlash = getFlashMovieObject("Test");
        myFlash.jsf(aaa);
};
HTML
<form name="form1" onsubmit="return false;">
         <input type="text" id="input01" value="" />
         <input type="button" value="Send" onclick="jsf(this.form.input01.value);" /><br />
</form>




【4】JS获取FLASH里的值,再传回页面
JQUERY里(getFlashMovieObject函数就不写了,同上)

$("#topBtn4").click(function(){
	vr.askInfo();//查询当前FLASH的状态
	if(flashStatus != "idle"){
		vr.vrStop();
         }else{
		vr.vrPlay();
	};
});
//获取返回的flashStatus值,由JS调用FLASH里的函数,再调用回这个函数
function getInfo(fs){
   ?flashStatus = fs;
};


AS3

//允许js调用flash中的函数 参数1:要调用flash函数的js函数名,参数2:被调用flash函数名  
ExternalInterface.addCallback("askInfo",askInfo);


function askInfo(){//这个函数是让JS调用来获取FLASH状态信息的,再传递回JS
??? var fs:String = flashStatus;
??? ExternalInterface.call("getInfo",fs);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读