flash 问题集锦

让Flash广告具有记忆功能
  当你常去的论坛上有个 Flash 广告,而你每次刷新页面的时候它都从头播放。会不会感觉很烦? 所以我们要改装一下这个Flash.给他植入记忆功能.继续播放动画

要实现的效果:
  刷新或关闭页面的时候记住上次的播放头位置.
  下一次打开页面动画接着上一次的位置继续播放.
(注:把此段代码放到动画的第一帧即可.)应用:效果可以看经典论坛的 Banner 广告.

  实现代码如下(发布成AS1/AS2):
+展开
-ActionScript
var deng = SharedObject.getLocal('remember');
if (deng.data.pos != undefined) {
      gotoAndPlay(deng.data.pos);
}
this.onEnterFrame = function () {
      deng.data.pos = _currentframe;
};
deng.flush();


flash屏蔽掉链接上的小手-useHandCursor
  当鼠标指针位于 myBtn1_btn 上方并单击该按钮时,不会显示手形光标。
+展开
-ActionScript
myBtn1_btn.useHandCursor = false
myBtn1_btn.onRelease = buttonClick; 
myBtn2_btn.onRelease = buttonClick; 
function buttonClick() {
trace(this._name); 
}


让按钮失效
+展开
-ActionScript
stop(); 
my_bt.onPress=function(){ //名为my_bt动作,当按下bt1时my_bt动作失效,按下bt2时my_bt动作恢复 
my_bt._x+=1; 

bt1.onPress=function(){ 
my_bt.enabled=false ; //使名为my_bt的按钮失效 

bt2.onPress=function(){ 
my_bt.enabled=true;  //使名为my_bt的按钮恢复 
}


在当前帧上暂定若干秒后在自动播放下一帧
在当前帧上暂定若干秒后在自动播放下一帧需要一个自动的过程,而不是通过按钮控制的。
+展开
-ActionScript
stop();
var zishu= setInterval(go, 5000);
function go() {
play();
clearInterval(zishu);
}


让mc成为按钮,flash鼠标滑过影片剪辑时是否显示手指形
  首先,如何然MC成为按钮:
+展开
-ActionScript
mc01.onRelease=function(){
gotoAndStop(2);
}

//让mc成为按钮,as控制。
useHandCursor(MovieClip.useHandCursor 属性)
public useHandCursor : Boolean
  一个布尔值,指示当鼠标滑过影片剪辑时是否显示手指形(手形光标)。useHandCursor 属性的默认值是 true。如果 useHandCursor 设置为 true,则当鼠标滑过按钮影片剪辑时会显示用于按钮的手形光标。如果 useHandCursor 为 false,则将改用箭头指针。
  可以随时更改 useHandCursor 属性;修改后的影片剪辑会立即使用新的光标行为。可以从原型对象中读出 useHandCursor 属性。

可用性:ActionScript 1.0;Flash Player 6

示例
  下面的示例为名为 myMC1_mc 和 myMC2_mc 的两个影片剪辑设置 useHandCursor 属性。对于其中一个实例,该属性设置为 true;对于另一个实例,它设置为 false。请注意这两个实例如何仍能接收事件。
+展开
-ActionScript
myMC1_mc.onRelease = traceMC;
myMC2_mc.onRelease = traceMC;
myMC2_mc.useHandCursor = false;

function traceMC() {
    trace("you clicked: "+this._name);
gotoAndPlay(2);
};



让某一区域的按钮失效
  某一片区域有许多按钮,需要让这些按钮失效,当然可以将每个按钮的enabled设置为false,以下做法也许更好。
  用一个全透明的mc(命名为blank),盖在最高层,然后加如下代码
+展开
-ActionScript
blank.onRelease = function(){ 
//nothing 

blank.enabled = false;

  这样被盖住的区域内按钮就全失效了 blank被remove掉,按钮就恢复了


flash中fscommand几个参数的应用.
+展开
-ActionScript
fscommand("fullscreen""false");//表示是否全屏,而参数arguments可以取两个值:true( 允许全屏)或者false(禁止全屏),系统默认值为false。
fscommand("allowscale""false");//始终保持swf影片的大小显示。
fscommand("showmenu""false");//屏蔽鼠标右键。
fscommand(quit)//关闭当前swf。
fscommand("exec","applicationname")

  其作用是运用FLSH调用外部的应用程序。调用EXE文件最重要的一点,必须把你的SWF文件先转换成EXE,也就是FLASH的播放器。必须把你要调用的EXE文件放在同一目录的fscommand文件下。

开启一个外部可执行程序:扩展名.exe可以省略。
  具体来说,若一个exe文件(假设为flash1.exe)和该swf文件本身在同一个目录下,则直接键入程序文件名即可。如:
+展开
-ActionScript
fscommand("exec","flash1"
否则,应写明路径。如打开IE浏览器窗口: 
fscommand("exec","c:\\progra~1\\intern~1\\iexplore"
//注意DOS下对长文件(夹)名的处理形式。

下面两种情况也可以不写路径:
1.当可执行程序是在c:\windows目录下时,可以不写路径。如调用windows的计算器,下面三种写法均可:
+展开
-ActionScript
fscommand("exec","c:\\windows\\calc.exe"
fscommand("exec","c:\\windows\\calc"
fscommand("exec","calc")

2.调用DOS命令也可省略路径。如下例打开MS-DOS下的Edit编辑器:
+展开
-ActionScript
fscommand("exec","edit.com")

如果熟悉批处理文件写法,通过FSCommand->exec命令执行批处理文件可以一举多得。


flash调用外部exe文件
  1.新建一名为fscommand的文件夹放置要调用的exe文件.
  2.新建一个flash文件,建一按钮,写入as如下:
+展开
-ActionScript
on (release) {
fscommand("exec","fly.exe");
}

  3.把新建的swf转为exe,才可以调用.

解决Flash影片中的图片抖动锯齿
Flash 影片的默认质量是高,其实还可以更高[也更耗资源].
  AS 控制方法:
+展开
-ActionScript
_quality = "best";

或者在发布向导中的HTML标签Quality项选择Best.这样图片就不抖了


as改变外部mc尺寸
  1.新建一个mc,取名为:mc
  时间轴代码:
+展开
-ActionScript
_root.createEmptyMovieClip("mc", 1);
mc.loadMovie("mc.swf");
onEnterFrame = function() {
  if (mc.getBytesLoaded()>0 && mc.getBytesLoaded()>=mc.getBytesTotal()) {
    mc._xscale = 50;
    mc._yscale = 50;
  }
};



调用远程swf的方法
安全沙盒冲突
解决跨域名访问
+展开
-ActionScript
System.security.allowDomain("127.0.0.1");

//===================================================


  例如你要访问的文件为远程地址 http://www.stonemx.com/design/flashgbook/2/flashgbook.swf

+展开
-ActionScript
System.security.allowDomain("www.stonemx.com");

_root.loadMovie("http://www.stonemx.com/design/flashgbook/2/flashgbook.swf");




flash[swf]在网页里面背景透明
flash[swf]在网页里面背景透明
加入以下代码
+展开
-HTML
<param name="wmode" value="transparent">



flash[swf]flash按钮打开全屏窗口
  这里举个最常见的例子——利用getURL调用javascript打开新窗口
  方法如下:
  将下面的代码加到Flash按钮上
+展开
-ActionScript
on (release)
{
getURL("javascript.:fullwin(\'main.htm\' , \'main\' , \'toolbar=no,width=100%,height=100%,left=0,top=0,status=no,scrollbars=no,resizable=no\')");
}

具体参数设置如下:
URL -> 弹出新窗口的页面地址
Width -> 窗口宽度
Height -> 窗口高度
Name -> 窗口名
Tool bar -> 是否需要工具栏
Menu bar -> ........菜单栏
Location bar -> ....地址栏
Scroll bar -> .....滚动条
Status bar -> ......状态栏
Resizable -> 是否可以改变大小
  发布成HTML格式,然后打开该文件,给它添加一段代码,则在显示页的HEAD中写
+展开
-HTML
<script language="JavaScript"> 
function openNewWindow(URLtoOpen, windowName, windowFeatures) { newWindow=window.open(URLtoOpen, windowName, windowFeatures); } 
</script> 



Flash加载外部文件 调用外部图片(加载到影片剪辑中)
  调用外部图片(加载到影片剪辑中)
  外部图片必须和正在编辑的Flash文件放在同一目录下
1.制作两个按扭(一个调用,一个清除)拖放到场景中
2.制作一个空的影片剪辑,拖到场景中,实例名是:mymc;
3.时间轴上第一帧上的AS:
+展开
-ActionScript
i=0;//定义一个变量i,并且赋初值为0;

  调用按扭上的AS:
+展开
-ActionScript
on(release){//鼠标离开按扭后执行下面的代码;
i++;
if(i>9){
/*因为外面这有9张图,当变量大于9的时候,让变量为1,这样能够使加载的图片是连续的,即,每点一次按扭,
就换一张图,等到换到第9张图,再点按扭,则循环到第一张图(j1.jpg到j9.jpg,因为没有j0.jpg,
如果i=0,则会提示没有找到j0.jpg);*/

i=1;
}
loadMovie(("j"+i)+".jgp",mymc);//从j1.jpg开始加载图片到影片剪辑mymc中;
mymc._x=110;//以下设置加载图片的属性
mymc._y=35;
mymc._xscale=130;
mymc._yscale=130;
}

  清除按扭上的AS:
+展开
-ActionScript
on(release){
unloadMovie(mymc);//删除掉用loadMovie加载到影片剪辑的图片;
}

Ctrl+Enter测试。
当然AS可以写在帧上。


as 控制按钮
+展开
-ActionScript
btn1.onRelease=function(){
    _parent.gotoAndStop("Menu1");
}
btn2.onRelease=function(){
    _parent.gotoAndStop("Menu2");
}
btn3.onRelease=function(){
    _parent.gotoAndStop("Menu3");
}
btn4.onRelease=function(){
    _parent.gotoAndStop("Menu4");
}
btn5.onRelease=function(){
    _parent.gotoAndStop("Menu5");
}
btn6.onRelease=function(){
    getURL(mailto);
}


如何在页面上加上悬浮的FLASH效果?
  例如,在页面上,一群小金鱼到处游动:把下面的代码放到页面源代码里。调整里面LEFT、TOP的数值,即调整FLASH相对与页面左、上的距离。WIDTH、HEIGHT的值,为FLASH的宽和高。
+展开
-ActionScript
<embed style="LEFT: 100px; POSITION: absolute; TOP: 0px;" 
align=right src=http://imgfree.21cn.com/free/flash/17.swf 
width=600 height=600 wmode="transparent"></embed>


怎么控制loadmovie进来的swf文件
1.播放、停止
+展开
-ActionScript
aaa.loadmovie("111.swfl",0); 

将111.swf调用进mc aaa中
停止按钮上加aaa.stop();
播放按钮上加aaa.play();
2.要主场景也同时停止播放
停止按钮上加
+展开
-ActionScript
stop();  
aaa.stop() ;播放按钮上加 
play() ; 
aaa.play();控制主场景或所在的mc跳到第几帧
aaa.loadMovie("111.swf", 0);  
this.onEnterFrame = function() {  
  a1 = aaa._totalframes;  
  a2 = aaa._currentframe;  
  if (a1 == a2) {  
      aaa.gotoAndPlay(100);  
      //aaa里面被调用的影片跳到该影片的第100桢  
      gotoAndPlay(100);  
      //场景也跳到场景里面内容的第100桢  
  }  
};

加支付宝好友偷能量挖...


评论(0)网络
阅读(127)喜欢(0)flash/flex/fcs/AIR