2007年7月2日
我们知道vbs中有个trim的函数,用来取掉一个字符串两头的空格,as中没有,我们可以自定义一个:

//取掉字符串的前后空格
    function trim(returnString) {
        
for (; returnString.charCodeAt(0== 0x20; returnString=returnString.substr(1)) {
        }

        
for (; returnString.charCodeAt(returnString.length-1== 0x20; returnString=returnString.substr(0, returnString.length-1)) {
        }

        
return returnString;
    }

//取掉字符串的前后回车
    public static function trimEnter(returnString) {
        
for (; returnString.substr(01== String.fromCharCode(13); returnString=returnString.substr(1)) {
        }

        
for (; returnString.substr(returnString.length-11== String.fromCharCode(13); returnString=returnString.substr(0, returnString.length-1)) {
        }

        
return returnString;
    }
这个也常用:
//字节换算KB,MB
    function GetSizeType(size:Number) {
        
if (size<1024{
            
return int(size*100)/100+" bytes";
        }

        
if (size<1048576{
            
return int((size/1024)*100)/100+"KB";
        }

        
if (size<1073741824{
            
return int((size/1048576)*100)/100+"MB";
        }

        
return int((size/1073741824)*100)/100+"GB";
    }
验证输入的内容是否为数字:
if(isNaN("要验证的内容"== true){
    trace(
"输入了非数字");
}
else{
    trace(
"输入了数字");
}

posted @ 2007-07-02 13:55 三千 阅读(908) 评论(5) 编辑

在一个Flash制作的图片上传程序中(使用了FileReference,但这玩意儿不能返回服务器数据),需要在as 中生成guid做为服务端文件的文件名,起初想使用js生成然后再传入flash,js生成方法如下:

<SCRIPT     LANGUAGE="JavaScript">   
    
<!--
    
function guid()
    
{
     
var  TypeLib  =  new  ActiveXObject( "Scriptlet.TypeLib" );   
     strGUID
=  TypeLib.Guid;   
     alert (strGUID );
    }

    
//-->   
</SCRIPT> 
<href="javascript:void(0);guid()">test</a>

但是js生成时,浏览器会弹出ActiveX控件的交互询问,不爽,但此种方式应该是生成真正的guid。

后来想,使用as生成伪guid,应该可以,这种方法虽然理论上不是完全唯一,但是重复的几率已经很少了。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:394ac5df-7259-2598-ccda-525D119C1b8b即为有效的 GUID 值,那么根据此规则,写出as的伪guid生成方法如下:

function createUID():String {
        
var uid:String = "";
        
var ALPHA_CHARS:String = "0123456789abcdef";
        
var i:Number;
        
var j:Number;
        
for (i=0; i<8; i++{//先成成前8位
            uid 
+= ALPHA_CHARS.charAt(Math.round(Math.random()*15));
        }

        
for (i=0; i<3; i++{//中间的三个4位16进制数
            uid 
+= "-";
            
for (j=0; j<4; j++{
                uid 
+= ALPHA_CHARS.charAt(Math.round(Math.random()*15));
            }

        }

        uid 
+= "-";
        
var time:Number = new Date().getTime();
        uid 
+= ("0000000"+time.toString(16).toUpperCase()).substr(-8);//取后边8位
        
for (i=0; i<4; i++{
            uid 
+= ALPHA_CHARS.charAt(Math.round(Math.random()*15));//再循环4次随机拿出4位
        }

        
return uid;
    }

posted @ 2007-07-02 13:52 三千 阅读(710) 评论(6) 编辑


ExternalInterface是什么?

     ExternalInterface 类是Flash Player 8 以后提供的一个外部 API,在功能上与 fscommand()、CallFrame() 和 CallLabel() 方法相似,用来进行Javascript和Actionscript之间的通讯,这是官方推荐使用的类,相比前述三个方法,它更灵活、更通用。

通过这个类,as可以调用 HTML 页的js,同时传递任何数据类型的任意数量的参数,并可以接收调用的返回值;反过来,HTML 页上的 js,也可以调用 Flash 中的 as 函数。as 函数可以返回一个值,js会立即接收它作为该调用的返回值。详细使用方法在Flash的帮助中有详细讲述。

使用ExternalInterface时的"flash_id"未定义错误

     但是在使用这个类时,会出现问题,你满心欢喜而去,郁闷而归,虽然问题解决了,但是心有余悸,就象吃瓜子把皮卡喉咙一样,要想使用ExternalInterface不报"flash_id"未定义(flash_id即htm中插入swf文件的Object的id),有下边三个方法:

1、加一个<form></form>在你嵌套flash的form里的<form>标记后面

<form><form></form>
//这里是你的flash代码内容。
</form>

2、添加如下JS在你的flash之前:

<script type="text/javascript"> 
function ExternalInterfaceManager() 

      
this.registerMovie = function(movieName) 
          
if(!window.fakeMovies) window.fakeMovies = new Array(); 
          window.fakeMovies[window.fakeMovies.length] 
= movieName; 
      }
 
      
this.initialize = function() 
          
if(document.all) 
          

              
if(window.fakeMovies) 
              

                  
for(i=0;i<window.fakeMovies.length;i++
                  

                      window[window.fakeMovies[i]] 
= new Object(); 
                  }
 
                  window.onload 
= initializeExternalInterface; 
              }
 
          }
 
  
      }
 
}
 
function initializeExternalInterface() 
      
for(i=0;i<window.fakeMovies.length;i++
          
var movieName = window.fakeMovies[i]; 
          
var fakeMovie = window[movieName]; 
          
var realMovie = document.getElementById(movieName); 
  
          
for(var method in fakeMovie) {             
              realMovie[method] 
= function() {flashFunction = "<invoke name=\"" + method.toString() + "\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments, 0+ "</invoke>";this.CallFunction(flashFunction);} 
          }
 
  
          window[movieName] 
= realMovie; 
      }
 
}
 
var eim = new ExternalInterfaceManager(); 
eim.registerMovie(
"flash_id"); 
eim.initialize(); 
</script> 

其中eim.registerMovie("flash_id"); 中的flash_id为你的swf的ID。

3、还有一个方法,就是将flash放在form标记之外;

这个问题在官方livedocs有人反馈,但不知Flash 9中是否解决。

posted @ 2007-07-02 13:11 三千 阅读(738) 评论(1) 编辑

很奇怪的是,as2中竟然没有字符串的替换函数,我原以为会有个replace,可是呢,没有!

如果要替换某个字符,咋办呢?

最后找到了方法,可以这样写,虽然怪异了点,但还是很简单的:

          //把全角逗号换成英文逗号
          str = str.split(",").join(",");

其实就是先拆成数组,再把数组按指定的字符连接成字符串。

posted @ 2007-07-02 12:57 三千 阅读(1743) 评论(2) 编辑
  • 美国项目管理学会PMP。
  • ★RIA 编程 Q群:18144801
  • MSN:
昵称:三千
园龄:6年8个月
粉丝:19
关注:4
<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

搜索

 
 

常用链接

最新随笔

我的标签

随笔分类(162)

文章分类(70)

[Flash开发笔记] 系列

积分与排名

  • 积分 - 233982
  • 排名 - 345

最新评论

阅读排行榜

评论排行榜

推荐排行榜