[swf width=400 height=150]http://www.aslibra.com/down/txt_style.swf[/swf]

代码如下:

Stage.scaleMode = "noscale";
//
import TextField.StyleSheet;
//new style
var my_styleSheet:StyleSheet = new StyleSheet();
//方式1,每个属性分别赋值
var styleObj:Object = new Object();
styleObj.color = "#0000ff";
styleObj.fontWeight = "bold";
my_styleSheet.setStyle(".bold", styleObj);
delete styleObj;
//方式2,直接写成一个对象
my_styleSheet.setStyle(".fade", {color:"#999999", fontWeight:"bold"});
my_styleSheet.setStyle("p", {color:"#ff0000", fontSize:"14px", fontWeight:"bold"});
//还可以设置伪类
my_styleSheet.setStyle("a", {color:"#ff0000"});
my_styleSheet.setStyle("a:hover", {color:"#000000", fontStyle:"italic"});
//
//txt
var newsText:String = "<p>李白简介</p>";
newsText += "<br>李白(<span class='fade'>公元701年—公元762年</span>),";
newsText += "字太白,号青莲居士。";
newsText += "李白是唐朝著名诗人,也是中国最著名的诗人之一,<span class='bold'></span> ";
newsText += "是我国文学史上继屈原之后又一伟大的浪漫主义诗人";
newsText += ",有“诗仙”之称。<br>李白和杜甫合称“<span class='bold'>李杜</span>”。 ";
newsText += "<br>link style: <a href='http://www.aslibra.com' target='_blank'>";
newsText += "<u> http://www.aslibra.com </u></a>";
//
//set
news_txt.styleSheet = my_styleSheet;
news_txt.wordWrap = true;
news_txt.multiline = true;
news_txt.html = true;
news_txt.htmlText = newsText;

点击这里下载fla文件
MD5的加密有广泛的应用,flash里面有两个写法:
1 写成 md5 的类文件
2 写成 md5 的函数

看怎么方便了,这里列举两个方法的范例可以给大家下载:

1 类文件和实例:up/1166696921.rar

2 函数的写法和实例:up/1166697053.rar

大家使用愉快~
以前不太清楚函数怎么设定,发觉比较简单:

设定一个函数就可以直接调用了,如果需要再次调用,比如里面还有另外一个对象,那把它的函数再次分配给本对象就可以了,很简单。

见下面的例子:

MagKeywordSearch.as
1 设定一个针对flash的id的函数,这里的id是main

<SCRIPT event="FSCommand(command,arg)" for="main" language=JavaScript>  
alert(command+arg);
window.document.main.SetVariable("info","test");
</SCRIPT>

第一行是设定命令(event)以及针对的id(for)
第二行是使用传递过来的两个变量
第三行是设定flash里面的变量的值,暂时找到就这样做反馈了

2 对于flash,embed里面要有一个 id="main"

<embed src="index.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="main" align="middle" id="main" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

唉,又搞这类的互动了……
以前做盛大的时候就烦了一次。
看过FlashK写的《关于Flash AS2 中的拍照图片传输量太大的解决思路》,也想加一个算法。
我们都说无损压缩吧,保留点阵数据。
此法压缩的数据已经接近BMP格式的图片大小,我的机器花费大约1秒处理200*200的图片,比未压缩的字符的压缩比率为50%。具体图片比较黑暗则压缩更好。

引用
未压缩文本:295k
压缩文本:143k
BMP图片(200*200一样的图片):117k


压缩结果类似:
引用
200,200='c,'c,'c,'c,'c,Eg,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,Eg,Eg,Eg,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,R9,R9,R9,R9,0i,0i,0i,0i,0i,0i,0i,0i,0i,0i,0i,0i,Eg,Q9,){,)c,0i,Eg,Eg,0i,0i,0i,R9,R9,R9,R9,)c,/E,'c,0i,R9,0i,R9,R9,R9,R9,R9,R9,0i,)c,)c,R9,R9,R9,R9,R9,R9,R9,R9,R9,R9,EE,)


我这里的思维是用自定义的进制来处理数字压缩的问题。

原理:按字符来算,一个数字用2进制是最长的,用十进制则更短,用16进制更短,那用尽量大的进制则字符越少。

进阶压缩算法:选择起始点算法,分段压缩,邻近同样字符用范围数表示。

先说一下本次的算法:


//program by hqlulu
//www.aslibra.com

import flash.display.BitmapData;
//自定义宽和高
var max_w:Number = 200;
var max_h:Number = 200;
var myBitmap:BitmapData = new BitmapData(max_w, max_h, true, 0x000000);
myBitmap.draw(_root);
view_mc.attachBitmap(myBitmap, 10);
//是否压缩
//我的测试数据:
//true:1382 ms
//false:364 ms
var is_compress:Boolean = true;
//
//定义进制字符,在这里差不多把所有的字符用上了,用的越多压缩越好,不过选择ffffff所达到的字符数最好
var code:String = "0123456789qwertyuiop[]asdfghjkl;zxcvbnm./QWERTYUIOP{}|ASDFGHJKL:ZXCVBNM<>?~!@#$%^&*()_+'";
var code_array:Array = code.split("");
//多少个字符就是多少进制了
var byte:Number = code.length;
function getcode(i:Number):String {
//取整求余法
var return_code:String = "";
while ((i=Math.ceil(i/byte))>byte) {
return_code += code_array[i%byte];
}
return_code += code_array[i];
return return_code;
}
//
//记录的数组
var p_array:Array = new Array();
var timer:Number = getTimer();
function save2array():Void {
for (var i:Number = 0; i<max_w; i++) {
p_array[i] = new Array();
for (var j:Number = 0; j<max_h; j++) {
//这里不加判断的话,速度可以提高些
if (is_compress) {
p_array[i].push(getcode(myBitmap.getPixel(i+1, j+1)));
} else {
p_array[i].push(myBitmap.getPixel(i+1, j+1));
}
}
}
}
save2array();
trace("转换时间: "+(getTimer()-timer)+" ms");
//分隔符要用那些没有做在进制字符的
var my_data:String = max_w+","+max_h+"=";
//trace(my_data);
my_data += p_array.join(",");
trace("字符长度:"+my_data.length);
//字符长度
//我的测试数据:
//false:302419
//true:147174
//trace(my_data);


执行时间不多,对于程序的有效行比较好。
大家可以看一下代码的执行效果

进阶压缩的原理:

引用
'c,'c,'c,'c,'c,Eg,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,Eg,Eg,Eg,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,'c,


看到上面的数据了,对于重复的点,可以考虑这样处理:

引用
'c(5),Eg,'c(10),Eg,Eg,Eg,'c(15),


这个算法需要再对数组处理,本人未写出,提高的压缩比率是客观的。
当然"()"需要在后期先处理,把"()"的多个字符先行恢复。

引用
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,


对于上面字符,可以看出来,如果相片偏暗,以黑色为基点运算就好,相片偏亮,则适宜以白色为基点运算。

分段压缩的算法效率不大,毕竟现在已经是三个字符表示了,如果分区间,可以用两个字符表示颜色,但是还要用一个字符表示区间。


图片压缩方法

相邻的点的颜色一样,采用"(个数)"表示
如果颜色相差不大,差值为n,则在二维数组中进行比较,把某些点近似为该点,这样就有更多的个数了,字符数量就更加少。
分页: 2/7 第一页 上页 1 2 3 4 5 6 7 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐