2008年2月29日

[Flash开发笔记] ComboBox,List组件的二个函数
[Flash开发笔记] AS中保留多少位小数的函数

[Flash开发笔记] 如何让Flash的swf文件在客户端不缓存
[Flash开发笔记] List控件--删除指定label或data的项

[Flash开发笔记] Flash 执行exe文件
posted @ 2008-07-02 18:09 三千 阅读(557) | 评论 (0)编辑

    老是有网友找我要,所以干脆放出来,这是TTGame整理的版本,其实网上一搜到处都有。排版和没有图片不理想,但也凑合能看。
    陈冰那个版本我从来没见过,因为是付费的,不知道现在还是否有出售,不过我已经用不上了,FMS搞熟了就那些东西,剩下的就靠经验积累了。

    fms_api_cn.rar(3.61MB)>>
posted @ 2008-04-24 10:16 三千 阅读(486) | 评论 (0)编辑

以下二个函数,适合ComboBox,List件。

CheckCmbItemExists:检测某项是否已存在。有时候,需要动态向List或ComboBox组件中添加项,但是在添加前,要事先检查是否已经存在了,避免重复添加。

SelectCmbItem:选中某项。有时候需要使用程序将List或ComboBox组件中某项选中。


    //检测某项是否已存在。
    function
 CheckCmbItemExists(_cmb, _data) {
        
var l = _cmb.length;
        
for (var j = 0; j<l; j++) {
            
if (_cmb.getItemAt(j).data == _data) {
                
return true;
            }
        }
        
return false;
    }
    
//选中某项。
    function SelectCmbItem(_cmb, _data) {
        
var l = _cmb.length;
        
var index = 0;
        
for (var j = 0; j<l; j++) {
            
if (_cmb.getItemAt(j).data == _data) {
                index 
= j;
                
break;
            }
        }
        _cmb.selectedIndex 
= index;
    }

posted @ 2008-04-21 11:41 三千 阅读(211) | 评论 (0)编辑
    有时候需要返回小数点后若干位的一个浮点数。如2.16832,保留二位小数变成:2.17,这样的函数在AS 2.0中是没有的,需要自己写:

function getPoint(num, l) {
    
return (Math.round(num*Math.pow(10, l))/Math.pow(10, l));
}


    用法
    num:要处理的浮点数;
    l:要保留的小数位个数;
    如:getPoint(2.16832,2),输出为:2.17
    注意
    在使用这个函数时,要注意溢出,因为num*Math.pow(10, l)及有可能超出了AS中浮点数所能表示的范围,从而导致你不想要的结果,另外,当输入数num比较大的时候,虽然还在浮点数表示范围内,但是小数点返回就可能不准确了,如:getPoint(12345678.123456789123, 10) ,输出结果:12345678.1234568,而不是12345678.1234567891。

   
posted @ 2008-03-13 20:25 三千 阅读(165) | 评论 (0)编辑
     摘要: 很早以前写过一篇文章(用C#截取指定长度的中英文混合字符串),但是对性能没有测试,有人说我写的这个方法性能有问题,后来想,可能真会有BT之需求要求传入一个几万K甚至几M体积的字符串进来,那将会影响正则Match的速度,比如文章系统中就极有可能用到,今天有点时间,就改进了一下,代码如下:publicstaticstringgetStr(strings,intl,stringendStr){strin... 阅读全文
posted @ 2008-03-06 10:06 三千 阅读(379) | 评论 (7)编辑
    问题
    如何让Flash的swf在客户端不缓存?即如何让swf文件不出现在IE浏览器的临时文件夹里?

    方法:

    一般的我们对于动态页面(asp,php等)禁止缓存都是通过语言本身设置HTTP头来实现的,但swf不能直接设置HTTP头。办法就是可以从服务端着手,在IIS里添加HTTP头:

cache-control: "no-cache"
pragma: "no-cache"
expires: "-1"


    操作方法见图示:



    但在设置IIS时要注意,如果对整个网站设置了HTTP头,则整站的内容(如jpg,gif,css,html等)都不会被缓存了,这样会导致每次都要重新下载这些文件,不好。那么可以更进一步,在网站下创建一个虚拟目录,然后对此虚拟目录设置HTTP头,把禁止缓存的swf文件放在其中。
   

posted @ 2008-03-04 12:03 三千 阅读(319) | 评论 (0)编辑
 
    在制作聊天室,斗地主游戏等这样的Flash/FMS程序时,可能会涉及到划分房间的问题,比如二个房间的游戏规则相同,功能相同,但是二个房间的数据独立,互不影响。
 
    那么这种应用,就涉及到应用程序实例了,如以下。
 
    nc.connect("rtmp://myDomain.com/chat_app/room_01") 
    nc.connect("rtmp://myDomain.com/chat_app/room_02")
 
    chat_app是一个聊天室程序,room_01和room_02就是chat_app的两个不同实例,整个地址的格式是:

    protocol:[//host][:port]/appname/[instanceName]
 
    地址中的[instanceName]以方括弧表示可有可无,但是不管这个"instanceName"有没有,它都会连接到了一个实例。
    就是说,任何一个客户机连接到一个应用程序时,这个客户机实际上都是连接到一个应用程序实例(application instances)的。
 
    比如我们一般的写法:

    nc.connect("rtmp://myDomain.com/my_app");
 
    本质上他和以下的做法是等同的:

    nc.connect("rtmp://myDomain.com/chat_app/_definst_");
 
    即在这种情况下,默认连接的实例为"_definst_",并不代表没有实例。
 
    那么我们就要好好理解一下“实例”,做过高级语言开发的,就很好理解,就象一个类有多个实例一样,它们具有同样的“规则”,但是具有各自不同的“数据”。
 
    一个实例不需要在服务器上定义它自己的目录。应用程序的资源,比如流和共享对象,对于每个实例而言都是独立的,并且是被存储在这个应用程序的流和共享对象目录下的它们各自的目录中的,比如实例room_01使用的SharedObject对象(比如叫"my_rso"),会存储在"\chat_app\sharedobjects\room_01\my_rso.fso"。
 
    使用应用程序实例的另一个原因是可以避免由这个应用程序创建的记录流或共享对象的冲突。例如,在上面的例子中,room_01和room_02都使用main.asc中的程序规则和逻辑,但是他们的数据各自独立,互不影响。由room_01创建的任何流或共享对象与由room_02创建的都是截然不同的,虽然这两个实例都是运行在同一个应用程序chat_app。


posted @ 2008-02-29 09:00 三千 阅读(294) | 评论 (0)编辑