Flash中关于函数参数数量问题

作者: veeky 时间: 2007年11月19日 星期一

今天发现Flash CS3帮助手册上的一个值得注意的问题(刚开始还以为是错误)!在讲述 arguments 对象时,官方的帮助手册上是这样介绍的:—————————————————-

      在 ActionScript 3.0 中,函数调用中所包括的参数的数量可以大于在函数定义中所指定的参数数量,但是,如果参数的数量小于必需参数的数量,在严格模式下将生成编译器错误。您可以使用 arguments 对象的数组样式来访问传递给函数的任何参数,而无需考虑是否在函数定义中定义了该参数。下面的示例使用 arguments 数组及 arguments.length 属性来输出传递给 traceArgArray() 函数的所有参数:

function traceArgArray(x:int):void {
      for (var i:uint = 0; i < arguments.length; i++) {
            trace(arguments[i]);
      }
}
traceArgArray(1, 2, 3);
// 输出:
// 1
// 2
// 3

 —————————————————-

      红色部分说得很明确,而且例子也提供了。但,无论在 Flash CS3 里面测试还是在 Flex Builder 里测试,都会出现这样的错误:1137: 参数个数不正确。不应超过 1 个。刚开始时,还以为这是帮助手册里的一个严重错误。但,后来发现,在严格模式下这种情况是不允许的。严格模式要求所传递的参数数量与所定义的参数数量完全相同。所以,这种情况只在标准模式下编译成功。

SwfObject解决Flash\Html传递参数问题

作者: veeky 时间: 2007年11月19日 星期一

彻底摒弃Adobe的激活ActiveX控件的方法一文中已经详细分析了使用Adobe提供的AC_RunActiveContent.js导致HTML与Flash之间不能传递参数的问题。经过Adobe论坛里GWD的提示,我转而寻求SwfObject的帮助。发现SwfObject是一个很好的解决方案。

SwfObject英文介绍:http://blog.deconcept.com/swfobject/
SwfObject中文翻译:http://www.awflasher.com/flash/articles/swfobj.htm
源文件:SWFObject 1.5

关于SwfObject的介绍上面两篇文章已经讲的很详细了。我这里只列一段标准的应用和一些上面两篇文章没有提到的问题.

Html中的JS代码
<script type=”text/javascript” src=”swfobject.js”></script>
<script type=”text/javascript”>
  // <![CDATA[
  var so = new SWFObject(”asCallJs.swf”, “MyDemo”, “500″, “400″, “9″, “#FF6600″);
  so.addVariable(”param1″, “Parameter1″); // this line is optional, but this example uses the variable and displays this text inside the flash movie
  so.addVariable(”param2″, “Parameter2″);
  so.useExpressInstall(’expressinstall.swf’);
  so.write(”flashcontent”);
  // ]]>
</script>
<!–被AS调用的JS函数–>
<script language=”Javascript”>
 // <![CDATA[
  // adds two numbers, and sends the result back to ActionScript
  function addNumbers(num1, num2)
  {
  result=num1 + num2;
  alert(”3+7=” + result);
  return (result);
  }
 // ]]>
</script>

Flash中的AS代码
//****************调用JS函数,得到返回值*****************
var n1:uint = 3;
var n2:uint = 7;
if (ExternalInterface.available) {
 var res:uint = ExternalInterface.call(”addNumbers”, n1, n2);
 function_txt.text=”3+7=”+res.toString();
}
//****************直接得到JS中参数****************
//AS2中做法
//param1_txt.text=param1;
//AS3中做法
param1_txt.text=this.loaderInfo.parameters.param1;
param2_txt.text=this.loaderInfo.parameters.param2;

注:如果要在AS3中用OOP来操作的话,需要专门构建一个类,用它其中的静态变量来存储全局变量,要使用这些变量的类先继承它(Storing SWFObject.addVariable() vars globally in AS3)。

作者:无雨之城

Flex GIF Animator download

作者: veeky 时间: 2007年11月15日 星期四

Flex GIF Animator可以创建GIF, Flash, Quicktime 动画,并且可以支持实时的3D特效以及声音同步。软件可以优化生成的动画影片的体积,或者调整影片的压缩比。内置30种优秀的视频特效,包括粒子运动特效等。此外软件还集成了抓图,图片融合,录音等功能。新版支持鼠标滚轮缩放。

下载:Flex GIF Animator v8.07

Flash最简单地实现对联广告的方法

作者: admin 时间: 2007年10月23日 星期二

FLASH关闭分很多种,常见的有三种,

1\一种是FLASH生成SWF文件或EXE文件后,点击关闭自已. 早期的关闭方面是是FLASH中建一个空帧,当点关闭时,跳转到空帧上。再把这个FLASH设成透明;

2\另一种是FLASH在网页中关闭自已,其实这很难实现,常用的办法就是在网页中加个图层,点关闭时隐藏这个图层.

3\第三种就是关闭浏览器的窗口.

阅读这篇文章的其余部分 »

用Flash AS模拟声波振荡效果

作者: veeky 时间: 2007年10月21日 星期日

  写着玩的,代码插入第一帧即可。

if (flag != 1) {
createEmptyMovieClip("ba", 9);
ba.lineStyle(1, 0xff0000, 100);
ba.lineTo(100, 0);
ba._y = Stage.width/1.5;
ba._x = Stage.height/2;
ba.createEmptyMovieClip("hk", 11);
ba.hk._x = 1;
ba.hk.lineStyle(10, 0x000ff, 100);
ba.hk.lineTo(0, 1);
ba.createTextField("txt", 100, 0, 10, 200, 50);
ba.txt.text = "调整波长";
var n:Number = 1;
var bochang:Number;
var zuo:Number = ba.hk._x;
var din:Number = ba.hk._y;
var you:Number = zuo 100;
var di = din;
_root.ba.hk.onPress = function() {
 this.startDrag(flase, zuo, din, you, di);
};
ba.hk.onRelease = function() {
 this.stopDrag();
};
ba.hk.onReleaseOutside = function() {
 this.stopDrag();
};
createEmptyMovieClip("a", 10);
a.lineStyle(6, 0xff0000, 100);
a.lineTo(1, 1);
a._x = 500;
a._y = 500;
var i = a._height;
var f = 1;
var v = 50;
flag = 1;
}
闪吧菜鸟kingofkofs = onEnterFrame=function () {
a._x = bochang;
_x -= bochang;
ba._x = bochang;
a._y = (Stage.height/2-a._y)/1.08*2.05;
lineStyle(1, 0x0055ff, 100);
lineTo(a._x, a._y);
bochang = (ba.hk._x)/10 1;
f ;
if (f == 30) {
 n = (300-n)/10;
 if (n>250) {
  n = 140;
 }
 a._y = n;
 f = 0;
}
};

IT巨头联手支持Open Ajax计划

作者: admin 时间: 2007年05月21日 星期一

IBM、Google、雅虎、甲骨文等IT巨头联手支持OpenAjax计划。IBM、Google、雅虎、甲骨文和BEA系统等许多高科技公司宣布共同支持一个开源软件计划,旨在推广一种名为“Ajax”的新兴的Web开发技术。

IBM在星期三举行的新闻发布会上说,这个新的“OpenAjax”计划旨在推广Ajax通用的兼容性的潜力以及很容易结合到新的和现有的软件程序中。AJAX是“异步t和XML”的缩写字,是一种快速创建互联网应用程序的方法,其响应速度比传统的网站快得多。这种技术能够让网站更新一个网页的部分内容,而不必刷新整个网页。Ajax网络应用程序还能够验证输入到表格中的数据,而不必等待服务器的验证。

然而,这个技术需要大量的软件工程资源并且缺少开发工具和实施工具的广泛支持。“OpenAjax”计划就是要解决这些问题。IBM计划向开源软件开发环境EclipseFoundation和免费的火狐浏览器的开发者Mozilla公司捐献自己的一些软件。Ajax技术开发的所谓的丰富的互联网程序与Adobe系统公司的Flash技术进行竞争。而微软正在开发自己的名为“Atlas”的Ajax开发工具。


QQ空间代码校内网代码QQ空间flash 非主流
Copyright © 2007 veeky学习笔记 . All rights reserved.