打发时光的102个好网站

1,看看自己具有哪个大明星的脸型 <a href="http://www.play-analogia.com/cgi-bin/index/" target=_blank><font color=#3b5998>http://www.play-analogia.com/cgi-bin/index/</font></a> <br><br>  2,超有意思的Flash网站,虚拟办公 <a href="http://agencynet.com/" target=_blank><font color=#3b5998>http://agencynet.com</font></a><br><br>  3,亲自动手给美女画纹身 <a href="http://www.crustydemons.co.uk/UK/tattoo_parlour/index.html" target=_blank><font color=#3b5998>http://www.crustydemons.co.uk/UK/tattoo_parlour/index.html</font></a><br><br>  4,输入文字就发出声音! <a href="http://www.putonghuaonline.com/" target=_blank><font color=#3b5998>http://www.putonghuaonline.com</font></a><br><br>  只支持繁体中文,同时也是学习普通话和粤语的好地方<br><br>  5,在线做个通缉令 <a href="http://www.glassgiant.com/wanted/" target=_blank><font color=#3b5998>http://www.glassgiant.com/wanted/</font></a><br><br>  6,制作属于自己的卡通大头像吧 <a href="http://cartoon.msn.com.cn/" target=_blank><font color=#3b5998>http://cartoon.msn.com.cn</font></a><br><br>  7,在你的照片上添加有趣对话 <a href="http://www.bubblesnaps.com/" target=_blank><font color=#3b5998>http://www.bubblesnaps.com</font></a><br><br>  8,这个网站提供各种有趣的在线拼图 <a href="http://www.thebroth.com/" target=_blank><font color=#3b5998>http://www.thebroth.com</font></a><br><br>  9,很逼真!模仿XP系统操作的网站 <a href="http://www.kingnare.com/" target=_blank><font color=#3b5998>http://www.kingnare.com</font></a><br><br>  10,原来制作带阴影的LOGO如此容易 <a href="http://msig.info/web2.php" target=_blank><font color=#3b5998>http://msig.info/web2.php</font></a><br><br>  11,教你打领带 <a href="http://www.tieknot.com/dalingdai.html" target=_blank><font color=#3b5998>http://www.tieknot.com/dalingdai.html</font></a><br><br>  12,系鞋带的N种方法 <a href="http://www.fieggen.com/shoelace/lacingmethods.htm#2trillion" target=_blank><font color=#3b5998>http://www.fieggen.com/shoelace/lacingmethods.htm#2trillion</font></a><br><br>  13,咱也弄个自己的徽章玩玩 <a href="http://www.says-it.com/seal/index.php" target=_blank><font color=#3b5998>http://www.says-it.com/seal/index.php</font></a><br><br>  14,在线素描 <a href="http://flashface.ctapt.de/" target=_blank><font color=#3b5998>http://flashface.ctapt.de</font></a><br><br>  15,各种动画图标制做 <a href="http://ajaxload.info/" target=_blank><font color=#3b5998>http://ajaxload.info</font></a><br><br>  16,各种字体图片制做 <a href="http://cooltext.com/" target=_blank><font color=#3b5998>http://cooltext.com</font></a><br><br>  17,<a href="http://www.pollyglotto.com/index8.php" target=_blank><font color=#3b5998>http://www.pollyglotto.com/index8.php</font></a><br><br>  超牛的语音翻译,输入文字里面的人自动给你以语音的形式翻译出来,有趣的是他眼睛跟你你鼠标转,遗憾的是不是免费的!<br><br>  18,你今天印书了么?免费将你的博客翻印成书 <a href="http://www.mrprint.cn/ UN=f1208b59454a9a744055&amp;ShowType=0" target=_blank><font color=#3b5998>http://www.mrprint.cn/ UN=f1208b59454a9a744055&amp;ShowType=0</font></a><br><br>  19,做个德国身份证玩玩 <a href="http://onlinewahn.de/generator/" target=_blank><font color=#3b5998>http://onlinewahn.de/generator/</font></a><br><br>  20,自己做个图来让别人拼 <a href="http://www.flash-gear.com/puzzle/" target=_blank><font color=#3b5998>http://www.flash-gear.com/puzzle/</font></a><br><br>  21,在线媒体提取工具 <a href="http://solor.cn/" target=_blank><font color=#3b5998>http://solor.cn</font></a><br><br>  22,DiY网络拼图 <a href="http://www.webpuzzle.cn/" target=_blank><font color=#3b5998>http://www.webpuzzle.cn</font></a><br><br>  23,2G网络硬盘,仿windows操作系统 <a href="http://www1.pc2n.com/" target=_blank><font color=#3b5998>http://www1.pc2n.com</font></a><br><br>  24.在线媒体转换工具 <a href="http://media-convert.com/" target=_blank><font color=#3b5998>http://media-convert.com</font></a><br><br>  它支持大量的文件格式之间的互相转换,包括视频、音频、PPT文档、Word文档、表格文档、图片等等数十种之多。比如你可以把mp3转换成wav,把png转换成gif,把word文件转换成txt文件<br><br>  25.在线保存,分享和交流网页,博客,新闻 <a href="http://www.hinale.com/" target=_blank><font color=#3b5998>http://www.hinale.com</font></a><br><br>  为您的一篇文章嵌入Hinale按钮,更方便用户保存和交流您的文章<br><br>  26.blog 搜索引擎 <a href="http://www.gnoos.com.au/" target=_blank><font color=#3b5998>http://www.gnoos.com.au</font></a><br><br>  27.[ ImageCrop ] <a href="http://www.imagecrop.com/" target=_blank><font color=#3b5998>http://www.imagecrop.com</font></a><br><br>  功能相对简单,它其实是一款为MSN、Yahoo Messager等制作头像的剪裁工具,因此,它的特色在于内置了专用尺寸模板,比如MSN、论坛头像75&#215;75或85&#215;85的尺寸等等。当然也可以自定义大小。<br><br>  28.[ Online Image Editor ] <a href="http://www.online-image-editor.com/" target=_blank><font color=#3b5998>http://www.online-image-editor.com</font></a><br><br>  支持JPG、PNG、GIF及BMP格式的图像,具备可转换颜色模式,添加边框,转换图像格式等功能,内置10个滤镜效果。<br><br>  29.[ GifWorks ]Gif动画处理工具 <a href="http://gifworks.com/" target=_blank><font color=#3b5998>http://gifworks.com</font></a><br><br>  可生成动画效果的文字,不过不支持中文。可编辑的图像格式只有Gif类型,允许上传最大单个文件为400K。具备30多种滤镜效果、3 种优化工具及旋转、剪裁等常用图像编辑功能<br><br>  30.[ Colorcombos ] <a href="http://www.colorcombos.com/" target=_blank><font color=#3b5998>http://www.colorcombos.com</font></a><br><br>  是一个网页配色自动探测工具,你只需输入网站地点,它就会帮你把该网站当前的网页配色方案展示出来,并提供相应的色值<br><br>  31.[ PhotoShow ] <a href="http://www.photoshow.com/" target=_blank><font color=#3b5998>http://www.photoshow.com</font></a><br><br>  是一个新型的图片展示服务,利用Flash技术构建。事实上,也可以把它当作如<br><br>  [ ibloks ] <a href="http://www.wappblog.com/entry/200.html" target=_blank><font color=#3b5998>http://www.wappblog.com/entry/200.html</font></a><br><br>  [ Eyespot ] <a href="http://www.wappblog.com/entry/108.html" target=_blank><font color=#3b5998>http://www.wappblog.com/entry/108.html</font></a><br><br>  等这样的混合工具,它可把图片及音乐混合,做成一段效果非常酷的流媒体。<br><br>  32.[ Imagesquash ] <a href="http://www.imagesquash.com/" target=_blank><font color=#3b5998>http://www.imagesquash.com</font></a><br><br>  又是一个图片转换工具,它可以根据按上传图片大小的百分比进行缩小,可转换图片格式为Jpeg、Gif及PNG,可改变图片质量。<br><br>  33.[ 在线ping你的博客 ] <a href="http://214.5d6d.com/" target=_blank><font color=#0000ff>http://214.5d6d.com/</font></a><br><br>  34.[ iBloks ] 是一个多媒体混合工具,它能把照片及音乐混合成一段视频<br><br>  <a href="http://www.ibloks.com/" target=_blank><font color=#3b5998>http://www.ibloks.com</font></a>  <br><br>  35.[ Web2.0 STYLr ] 是一个web2.0 Logo制作工具<br><br>  <a href="http://web2.0stylr.com/stylr.aspx" target=_blank><font color=#3b5998>http://web2.0stylr.com/stylr.aspx</font></a><br><br>  36.[ Web2.0 Logo Creator ] <a href="http://msig.info/web2.php" target=_blank><font color=#3b5998>http://msig.info/web2.php</font></a><br><br>  是一个专门用来制作web2.0网站logo的在线工具,制作出的logo具备了几个web2.0元素,比如倒影、beta标志等等,在有些地方可能不能打开这个网站,可以去<a href="http://www.cnproxy.com/webproxy.asp" target=_blank><font color=#3b5998>http://www.cnproxy.com/webproxy.asp</font></a>,通过代理打开!!<br><br>  37.爱因斯坦写汉字 <a href="http://www.sbfun.org/einstein/index.php" target=_blank><font color=#3b5998>http://www.sbfun.org/einstein/index.php</font></a><br><br>  38.[ Crusty Demons ] <a href="http://www.crustydemons.co.uk/UK/tattoo_parlour/index.html" target=_blank><font color=#3b5998>http://www.crustydemons.co.uk/UK/tattoo_parlour/index.html</font></a>]<br><br>  是一个在线的纹身视频制作工具,可自定义纹身图案、文字内容和纹身位置,完成后会生成一段视频,并且可下载图片或者发送给朋友<br><br>  39.[ Ponyfish ] <a href="http://www.ponyfish.com/" target=_blank><font color=#3b5998>http://www.ponyfish.com</font></a><br><br>  是一个在线Feed创建工具<br><br>  40.[ SubAdjust-Web ] <a href="http://dev.pdvel.com/subadjust/index.php" target=_blank><font color=#3b5998>http://dev.pdvel.com/subadjust/index.php</font></a><br><br>  是一个用来调整DVD字幕的在线工具,你可以通过<br><br>  [ SubAdjust-Web ] <a href="http://dev.pdvel.com/subadjust/index.php" target=_blank><font color=#3b5998>http://dev.pdvel.com/subadjust/index.php</font></a><br><br>  来调整DIVX字幕的时间,以便使其与DVD视频同步,另外还可以用来在SubRip和MirroDVD字幕两种格式之间互换。<br><br>  41.在线favicon图标制作 <a href="http://tools.dynamicdrive.com/favicon/" target=_blank><font color=#3b5998>http://tools.dynamicdrive.com/favicon/</font></a><br><br>  42.[ converticon.com ] <a href="http://converticon.com/" target=_blank><font color=#3b5998>http://converticon.com</font></a><br><br>  是一个在线ico文件和png文件互相转化工具<br><br>  43.[ krun.ch ] <a href="http://krun.ch/" target=_blank><font color=#3b5998>http://krun.ch</font></a><br><br>  提供了本地文件和网络文件的压缩和解压四种功能,压缩或解压缩后的文件可以下载到本地。另外它提供了zip、rar和gzip压缩文件格式供选择<br><br>  44.[ 在线做个徽章 ] <a href="http://www.says-it.com/seal/index.php" target=_blank><font color=#3b5998>http://www.says-it.com/seal/index.php</font></a><br><br>  45.在这里,你可以在线做个以自己照片做硬币人物的硬币图片,好酷哦!!<br><br>  <a href="http://onlinewahn.de/generator/m-maker.htm" target=_blank><font color=#3b5998>http://onlinewahn.de/generator/m-maker.htm</font></a><br><br>  46.想想自己的照片被外文报纸刊登在头版头条该是多么风光,在这里就可以轻松实现 <a href="http://onlinewahn.de/generator/z-maker.htm" target=_blank><font color=#3b5998>http://onlinewahn.de/generator/z-maker.htm</font></a><br><br>  47.一个在线生成flash菜单的网站,对站长很有帮助. <a href="http://www.hostsun.com/gr/flash_generators.php" target=_blank><font color=#3b5998>http://www.hostsun.com/gr/flash_generators.php</font></a><br><br>  48.对有些做了IP限制的网站,可能无法访问,可以使用这个代理访问. <a href="http://www.cnproxy.com/" target=_blank><font color=#3b5998>http://www.cnproxy.com</font></a><br><br>  49.在线图片处理,网通 <a href="http://www.iephotoshop.com/" target=_blank><font color=#3b5998>http://www.iephotoshop.com</font></a><br><br>   电信 <a href="http://www1.iephotoshop.com/" target=_blank><font color=#3b5998>http://www1.iephotoshop.com</font></a><br><br>  50.你可以制作出很有专业水准的动态logo,有很多的样式供你选择 <a href="http://www.logomaker.cn/" target=_blank><font color=#3b5998>http://www.logomaker.cn</font></a><br><br>  51.Flash头像 <a href="http://www.dookyweb.com/avatars.swf" target=_blank><font color=#3b5998>http://www.dookyweb.com/avatars.swf</font></a><br><br>  52.印象派涂鸦板 <a href="http://jacksonpollock.org/" target=_blank><font color=#3b5998>http://jacksonpollock.org</font></a><br><br>  53.在线网页截屏工具,在浏览器地址栏输入下面的代码就可以了。<br><br>  <a href="http://images.websnapr.com/ url=thw.568idc.com" target=_blank><font color=#3b5998>http://images.websnapr.com/ url=thw.568idc.com</font></a>红色部分换成你想要截的网页的地址<br><br>  54.另外两个好用在线网页截屏工具 <a href="http://www.browsrcamp.com/" target=_blank><font color=#3b5998>http://www.browsrcamp.com/</font></a> 和 <a href="http://snap.otag.cn/screenshot.aspx" target=_blank><font color=#3b5998>http://snap.otag.cn/screenshot.aspx</font></a><br><br>  55.可以突破网吧的下载限制进行下载 <a href="http://thw.568idc.com/serve/xiazai.html" target=_blank><font color=#3b5998>http://thw.568idc.com/serve/xiazai.html</font></a><br><br>  56.跳转FLASH生成工具 <a href="http://www.dfxy.org/tiao/" target=_blank><font color=#3b5998>http://www.dfxy.org/tiao/</font></a><br><br>  57.[krun.ch] <a href="http://krun.ch/" target=_blank><font color=#3b5998>http://krun.ch</font></a><br><br>  是一个在线压缩工具,它提供了本地文件上传压缩和解压、网络文件的压缩和解压四种功能,压缩或解压缩后的文件可以下载到本地或者通过Email发送。另外它提供了zip、rar和gzip压缩文件格式供选择。<br><br>  58.在线生成纯css代码实现的圆角矩形的网站,对网站制作者很有用的东西<br><br>  <a href="http://www.spiffycorners.com/" target=_blank><font color=#3b5998>http://www.spiffycorners.com</font></a><br><br>  59.it" target=_blank&amp;gt;http://pentacom.jp/soft/ex/" target=_blank&amp;gt;http://www.onlinewahn.de/generator/m-maker.htm<br><br>  61.图片仓库:            <br><br>  <a href="http://pic.sdodo.com/" target=_blank><font color=#3b5998>http://pic.sdodo.com/</font></a><a href="http://pic.sdodo.com/" target=_blank><font color=#0000ff>http://pic.sdodo.com/</font></a><br><br>  62.在线FLASH动画制作         <br><br>  <a href="http://www.dfilm.com/index_movie_start.html" target=_blank><font color=#3b5998>http://www.dfilm.com/index_movie_start.html</font></a><br><br>  63.图片生成网页图标          <br><br>  <a href="http://www.chami.com/html-kit/services/favicon/" target=_blank><font color=#3b5998>http://www.chami.com/html-kit/services/favicon/</font></a><br><br>  64.由蝌蚪网络提供的Gmail注册入口   <br><br>  <a href="http://cnc.kedooo.net/gmail/" target=_blank><font color=#3b5998>http://cnc.kedooo.net/gmail/</font></a><br><br>  65.最全的邮件/QQ/MSN/BLOG图片生成器 <br><br>  <a href="http://www.eoool.com/" target=_blank><font color=#3b5998>http://www.eoool.com/</font></a><br><br>  66.收藏夹图标生成器         <br><br>  <a href="http://www.html-kit.com/e/favicon.cgi" target=_blank><font color=#3b5998>http://www.html-kit.com/e/favicon.cgi</font></a><br><br>  67.在线域名LOGO生成         <br><br>  <a href="http://phorum.com.tw/Generator.aspx" target=_blank><font color=#3b5998>http://phorum.com.tw/Generator.aspx</font></a><br><br>  68.免费3D banner在线制做网站    <br><br>  <a href="http://www.3dtextmaker.com/cgi-bin/3dtext.pl" target=_blank><font color=#3b5998>http://www.3dtextmaker.com/cgi-bin/3dtext.pl</font></a><br><br>  69.输入图片就能查看字体      <br><br>  <a href="http://www.my/" target=_blank><font color=#3b5998>http://uptime.netcraft.com/up/</font></a><br><br>  72.查看该域名IP主机下的其他域名  <br><br>  <a href="http://whois.webhosting.info/" target=_blank><font color=#3b5998>http://whois.webhosting.info/</font></a><br><br>  73.生成email图片         <br><br>  <a href="http://www.nhacks.com/email/index.php" target=_blank><font color=#3b5998>http://www.nhacks.com/email/index.php</font></a><br><br>  74.世界网络里面有很多不错的测试  <br><br>  <a href="http://www.linkwan.com/gb/broadmeter" target=_blank><font color=#3b5998>http://www.linkwan.com/gb/broadmeter</font></a><br><br>  75.几个大城市的地图搜索      <br><br>  <a href="http://map.zhongsou.com/" target=_blank><font color=#3b5998>http://map.zhongsou.com</font></a><br><br>  76.图片标签快速生成工具      <br><br>  <a href="http://www.eoool.com/" target=_blank><font color=#3b5998>http://www.eoool.com/</font></a><br><br>  77.查询在google所有服务器中的PR值 <br><br>  <a href="http://www.iwebtool.com/pagerank_checker domain=www.XXXXXoob.com" target=_blank><font color=#3b5998>http://www.iwebtool.com/pagerank_checker domain=www.XXXXXoob.com</font></a><br><br>  78.免费加入140个搜索引擎     <br><br>  <a href="http://freehosting.hostrave.com/p/ledbetter/submitware/index.php" target=_blank><font color=#3b5998>http://freehosting.hostrave.com/p/ledbetter/submitware/index.php</font></a><br><br>  79.在线生成多种样式的LOGO <a href="http://sherlocco.com/create.asp" target=_blank><font color=#3b5998>http://sherlocco.com/create.asp</font></a><br><br>  80.街道路牌签名生成器       <br><br>  <a href="http://www.streetsigngenerator.com/" target=_blank><font color=#3b5998>http://www.streetsigngenerator.com/</font></a><br><br>  81.blog标签图片80&#215;15/80&#215;31制作 <br><br>  <a href="http://button.blogflux.com/" target=_blank><font color=#3b5998>http://button.blogflux.com/</font></a><br><br>  82.在线生成漫画小图像的站     <br><br>  <a href="http://www.abi-station.com/tchinese/" target=_blank><font color=#3b5998>http://www.abi-station.com/tchinese/</font></a><br><br>  83.生成邮址图片\条形码生成\印章  <br><br>  <a href="http://www.makepic.com/" target=_blank><font color=#3b5998>http://www.makepic.com/</font></a><br><br>  84.QQ在线状态代码生成       <br><br>  <a href="http://is.qq.com/webpresence/code.shtml" target=_blank><font color=#3b5998>http://is.qq.com/webpresence/code.shtml</font></a><br><br>  85.身份证号码在线生成器-韩国/台湾 <br><br>  <a href="http://i972.net/~gen/" target=_blank><font color=#3b5998>http://i972.net/~gen/</font></a><br><br>  86.条形码在线生成器        <br><br>  <a href="http://www.gzbonny.com/asp/barcode.asp" target=_blank><font color=#3b5998>http://www.gzbonny.com/asp/barcode.asp</font></a><br><br>  87.聊天工具在线状态生成器     <br><br>  <a href="http://www.onlinestatus.org/usage.php" target=_blank><font color=#3b5998>http://www.onlinestatus.org/usage.php</font></a><br><br>  88.在线字体生成工具        <br><br>  <a href="http://www.youmade.com/" target=_blank><font color=#3b5998>http://www.logomaker.cn/</font></a><br><br>  90.在线制作卡通头像        <br><br>  <a href="http://cartoon.msn.com.cn/" target=_blank><font color=#3b5998>http://cartoon.msn.com.cn/</font></a><br><br>  91.网站综合信息查询        <br><br>  <a href="http://www.webmasterhome.cn/" target=_blank><font color=#3b5998>http://www.webmasterhome.cn/</font></a><br><br>  92.在线制作按钮(多种款式)     <br><br>  <a href="http://www.buttonator.com/" target=_blank><font color=#3b5998>http://www.buttonator.com</font></a><br><br>  93.在线建立您的Web 2.0网站LOGO  <br><br>  <a href="http://web2.0stylr.com/" target=_blank><font color=#3b5998>http://web2.0stylr.com</font></a><br><br>  94.在线生成彩字(爱狗狗吧)     <br><br>  <a href="http://www.igogo8.com/" target=_blank><font color=#3b5998>http://www.igogo8.com/</font></a><br><br>  95.live个性图标在线制作      <br><br>  <a href="http://linux-fans.com/email/live/live.php" target=_blank><font color=#3b5998>http://linux-fans.com/email/live/live.php</font></a><br><br>  96.在线(IE版)图像处理工具     <br><br>  <a href="http://www1.iephotoshop.com/" target=_blank><font color=#3b5998>http://www1.iephotoshop.com/</font></a><br><br>  97.ajax载入效果          <br><br>  <a href="http://ajaxload.info/" target=_blank><font color=#3b5998>http://ajaxload.info/</font></a><br><br>  98.报纸头条图片生成器       <br><br>  <a href="http://www.onlinewahn.de/generator/z-maker.htm" target=_blank><font color=#3b5998>http://www.onlinewahn.de/generator/z-maker.htm</font></a><br><br>  99.杂志封面生成器         <br><br>  <a href="http://www.funonit.com/funny_jokes/fake_magazine" target=_blank><font color=#3b5998>http://www.funonit.com/funny_jokes/fake_magazine</font></a><br><br>  100.MD5加密破解查询        <br><br>  <a href="http://www.md5.org.cn/" target=_blank><font color=#3b5998>http://www.md5.org.cn/</font></a><br><br>  102.批量查询未注册域名       <br><br>  <a href="http://www.moniker.com/domains/batch_reg.jsp" target=_blank><font color=#3b5998>http://www.moniker.com/domains/batch_reg.jsp

[转]安全沙箱手记(跨域加载操作必备良药)

在未经授权的情况下,Flash默认状态是不允许进行跨域通信的,这样就使得Flash的安全可靠性得到了提高

//++++++++++++++++++++++++++++ 没有指定元策略
警告: 域 xxx.xxx.xxx.xxx 没有指定元策略。将应用默认元策略 ‘master-only’。此配置已停用。请访问http://www.adobe.com/go/strict_policy_files_cn 以解决此问题。

A:策略文件有错误 CrossDomain.xml
< xml version=”1.0″ >
<!DOCTYPE cross-domain-policy SYSTEM “http://www.adobe.com/xml/dtds/cross-domain-policy.dtd”>
<cross-domain-policy> <site-control permitted-cross-domain-policies=”all” />
<allow-access-from domain=”*” />
<allow-http-request-headers-from domain=”*” headers=”*”/>
</cross-domain-policy>
PS:加载方式 Security.loadPolicyFile(“http://myDomain/crossdomain.xml”);
策略文件放在被加载者服务器根目录(在提供数据的站点放入一个crossdomain.xml文件)
个人理解:所有网络上的资源除非是服务器限制,我们都可以加载,只是无法对其进行数据的操作,如果需要操作这些数据,就需要在服务器上放置策略文件。(eg:如果需要对图片进行像素级操作,那就在服务器上放策略文件)
再次PS:如果策略文件不在根目录,需要用 Security.loadPolicyFile(filepath); 方法加载安全策略文件

//++++++++++++++++++++++++++++ 对加载者进行权限操作 (applicationDomain)
SecurityError: Error #2119: 安全沙箱冲突:调用者http://cs4165.vkontakte.ru/[[IMPORT]]/xn.smoothfish.cn/fish_xn/main.swf lang=ru&pid=0&apiID=1716287&mode=0&version=2027 不能访问 http://xn.smoothfish.cn/fish_xn/items.swf 拥有的 LoaderInfo.applicationDomain。
at flash.display:loaderInfo/get applicationDomain()
at cafe.util::CClass$/getClass()
at cafe.map::CLayerLoading/showCookResLoading()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at cafe.main::main/getResLoading()
at cafe.main::main/loadCompleteHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at cafe.load::CLoad/load()
at cafe.load::CLoad/loadStartHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at cafe.load::CLoad/loaderCompleteHandler3()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at cafe.load::CLoadAbstract/finish()
at cafe.load::CLoadConfig/loadConfigHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

在被加载者SWF内写入
Security.allowDomain(“*”);// 注意,”www.baidu.com” 和 “baidu.com”不是相同域,多个域 用逗号隔开
PS:security.allowDomain (“*”) 与跨域加载资源其实是两回事
有security.allowDomain (“*”)标注的Flash文件 只表示成功加载此的容器可以对它进行所有权限的操作

//++++++++++++++++++++++++++++
//为true的时候,先下载策略文件( 指定 Flash Player 在加载对象前是否应检查跨域策略文件是否存在)
var lcoader:LoaderContext = new LoaderContext(true);

//var loadercontexloaderContext = new LoaderContext(false, new ApplicationDomain(), SecurityDomain.currentDomain);
var context:LoaderContext = new LoaderContext();
context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
context.securityDomain = SecurityDomain.currentDomain;
loader.load(url,context);

//++++++++++++++++++++++++++++
解决flash安全沙箱的几种方法总结
1。配置跨域文件来实现
System.security.allowDomain(“www.baidu.com”, “baidu.com”, “mp3.baidu.com”);
2。利用JS脚本绕过安全沙箱(有待验证)
<param name=”allowScriptAccess” value=”always” />
3。使用Asp.Net绕过As3的跨域安全沙箱完全的文件转发,以极低的效率来解决了问题,基本无实用价值
4。本地安全沙箱:在C:\windows\system32\Macromed\Flash\FlashPlayerTrust 下面,添加一个txt文件,例如songhuan .txt,然后在里面添加你的本机的目录,例如f:\crayon\或者c:\都可以。

转载于 蜡笔工作室 原文:http://flash.9ria.com/thread-51824-1-1.html

用Flash的API写html5应用

在大量开发人员不断争论什么html5是否能代替Flash的时候,haXe社区的疯子们搞出了一个让html5控们瞠目结舌的东西——Jeash。仅仅
凭名字,你可能无法了解这个东西究竟是做什么用的,它的功能是——把haXe编写的Flash9以上版本程序编译成html5+js的应用!由于haXe
的Flash9 API与AS 3绝大部分完全相同,这意味着Flash开发人员将不用在理会html5会否替代Flash了。

说到这个
东西,还得把时间回溯到2008年,由于Apple教主乔布斯坚决不肯在Iphone中支持Flash,于是haXe社区的用户们另辟蹊径,先后开发了
nme、neash和hxcpp三个子项目。前两者的功能是让用户把Flash类转换为针对neko的可视化类,实现在nekovm中完全重现Flash
的大部分功能,而hxcpp项目则将针对neko的类转换成了C++类,从而实现了将haXe写的Flash应用源码编译成C++源码,并调用VC、
xcode或gcc等编译器编译成本地代码,由于可以开启opengl支持,hxcpp编译的本地应用运行速度几乎达到极限。同时,亦可将其直接编译为
Iphone可用的应用。该项目的完善版本在2008年末发布,并部分整合到了haXe中。这比Flash
CS5的Iphone输出功能早了半年多!并且至今为止,其开发的应用运行效率仍然比Flash CS5高得多。

以上说的并不是今天的重
点,重点是:相同的技术,也被应用到了HTML5和Javascript上,通过安装扩展库和修改编译参数,我们就可以把大部分haXe编写的Flash
应用源码直接编译为js文件。引用到html中后,即可显示出一个与Flash几乎完全相同的Canvas渲染结果(包括动画)。并且同样的源码,只要修
改编译参数,并且配置好相关环境(主要是C++编译器),就可以编译为Flash程序和C++程序

下面,我们来看一下Jeash的神奇魔法:

首先,下载安装haXe。去http://haxe.org/download
下载。

然后,安装一个叫做mercurial的东东,windows用户到 http://mercurial.selenic.com/downloads/
下载。Linux和MAC用户可以直接在软件源中安装,用apt-get、yum或darwinports安装即可。

最后,用hg软件下载复制jeash的源码库:hg clone http://mercurial.intuxication.org/hg/jeash

接下来,我们打开文本编辑器,复制下面的源码,并保存到一个单独的文件夹中,命名为App.hx文件(下面的代码保存目录相同):

  1. import flash.Lib;
  2. import flash.display.Shape;
  3. import flash.display.Sprite;

  4. class App extends Sprite
  5. {
  6. static function main ()
  7. {
  8. var ellipse:Shape = new Shape();
  9. ellipse.graphics.beginFill( 0xFF9900, 1 );
  10. ellipse.graphics.lineStyle( 0, 0xCCCCCC );
  11. ellipse.graphics.drawEllipse( 40, 40, 100, 60 );
  12. ellipse.graphics.endFill();

  13. var app = new App();
  14. app.addChild( ellipse );
  15. Lib.current.stage.addChild( app );
  16. }
  17. }

复制代码

上面的源码是不是很熟悉?除了flash.Lib类是haXe特有的外,静态的main函数做为程序入口与C/Java等语言类似,其他的都和AS 3没什么区别。

接着,我们把下面的代码保存为app.html文件:

  1. <html>
  2. <head>
  3. <title>My first Jeash example</title>
  4. </head>
  5. <body>
  6. <div id=”haxe:jeash” style=”width:150px; height: 150px”></div>
  7. <script type=”text/javascript” src=”./app.js”></script>
  8. </body>
  9. </html>

复制代码

然后是保存以下的build.hxml文件,这个是编译参数文件:

  1. –remap flash:jeash
  2. -js app.js
  3. -main App
  4. -cp jeash

复制代码

最后,把hg下载回来的源码,同样拷贝到这个目录中(是里面含有一个叫做Html5Dom.hx的文件的那个jeash目录)。

下面就可以编译了:

在命令行中进入这个目录,输入: haxe build.hxml 回车。再次看到命令行的时候,就是编译成功,如果有其他提示信息,八成是出错了。有时编译可能出现以下的错误:

jeash/jeash/display/DisplayObjectContainer.hx:270: characters 3-6 : Unknown identifier : Lib

解决方法是打开这个文件,在 import flash.geom.Point; 这一行下面增加一行代码:import flash.Lib;


译成功后,在这个目录下,你会发现多了一个app.js文件,就是上面的app.html文件中引用的那个。接下来,在Firefox
4或Chrome中打开app.html文件,就可以看到结果了(我的Firefox
3.6.13也能看到一个结果,但貌似由于支持的不好,看不到曲线)。

源码如下:

test.tar.gz


(157.57 KB)

[鬼市课堂]运用实例一onEnterFrame事件与摧毁此事件

 

onEnterFrame 是一个以影片剪辑帧频不断触发的动作,利用它可以不断地执行{}中的命令,但是执行完毕后,应当将此事件摧毁,以释放脚本所用的内存。

摧毁此事件的语法是delete

我们来复制50个虫子,当复制完毕后,摧毁此 onEnterFrame事件。请按照下列步骤操作:

1、放一个虫子在舞台上,实例名为bug,

2、选中第一桢,打开动作面板,输入:

var max:Number = 50;

var i:Number = 0;

onEnterFrame = function () {

duplicateMovieClip(“bug”, “bug”+i, i);

// 复制bug,bug的新ID分别是bug0 bug1 bug2…

this[“bug”+i]._x = random(400);

// 新的bug的坐标分别是400内任意的数

this[“bug”+i]._y = random(400);

this[“bug”+i]._rotation = random(180);

// 新的bug的旋转是180内任意的数,便于让虫子的头朝向各个方向

i++;

// 由于bug新的ID不能相同,故需要i++

if (i>=max) {

// 如果复制的数量大于等于50

delete this.onEnterFrame;

// 删除此事件

}

trace(i);

// 跟踪i,并且测试在没有delete的情况下i的情况

}; [upload=swf]UploadFile/2005-9/2005917113033673.sw

[upload=fla]viewFile.asp ID=270248[/upload]

点评:

1、在使用onEnterFrame的时候,一定要考虑到delete this.onEnterFrame,如果在同一个SWF文档中有比较多的onEnterFram的时候,会明显的感觉到电脑的负荷比较重的。

2、[]符号本身是数组操作符(关于数组,后面有比较详细的教程),使用数组操作符,可以对当前对象进行引用,在这里就相当于bug0、bug、1bug2….bug50共51个影片剪辑名称的浓缩写法。

3、random()是内置类之核心对象中的数学类对象中的一个函数,例: random(4)可能得到 0,1,2,3中的任何一个.

4、要多看帮助说明,即使看不懂,也要坚持,否则提高AS写作水平就比较难。

5、利用onEnterFrame原则上是按照桢频率的速度读取的,即:如果桢频率为12桢/秒,那么每读取一次需要的时间是1/12秒,这只是原则上是这样的,但当AS脚本很多的时候,往往读取的速度要下降,因此此事件没有利用setInterval间隔时间调用函数好用。下一节,学习定义函数并且调用。

[此贴子已经被作者于2005-9-24 11:54:34编辑过]



附件

:

2005-9/2005917113033673.swf

(2005-9-17 19:30, 2.41 K)



附件

:

2005-9/2005917113042591.fla

(2005-9-17 19:30, 45.5 K)

本文转自:http://www.5uflash.com/flashjiaocheng/Flashjichucaozuo/79.html

强大的HTML5

        前些天看了一些HTML5方面的资料,感觉的确很强大,firefox和chrome目前已经支持了一些特性,例如canvas和本地存储等等,今天花了一个晚上的时间实践了一把canvas,做了一个比较简单的web版的贪吃蛇,开发起来的确还是挺方便的,就像当年用TurboC做贪吃蛇的感觉差不多。

        网上最近好像很多文章都在讨论,HTML5是否会取代Flash,之前没接触过的时候一直以为HTML和Flash并没有可比性,但通过对HTML5的了解,改变了这种观点,HTML5的亮点很多,光是canvas、本地存储和web socket这几个特性,就能够做很多以前做不到的功能,想想看,使用canvas可以定制我们需要的界面甚至各种交互的控件,本地存储解决了以前脚本无法访问本地文件只能使用cookie保存数据的问题,web socket在网络游戏等方面更是可以发挥作用。所以现在感觉,HTML5替代Flash并非不可能,只要解决浏览器的兼容性问题和性能问题,Flash基本上就可以ByeBye了。

 

 

http://xiaowei.sinaapp.com/snake.html

FlashMediaServer入门教程

文章来源: http://www.flexs.cn/post/fms_server_106.html

什么是Flash Media Server ?

Flash大家庭里的一员,这个东东以前叫Flash Communication Server,传说中的FCS就是这个,现在改叫FMS了…

不见不知道哦,一见真可怕,adobe还有这么cool的东东,自从见了她,让我做些小东东的兴趣全没了,一心想研究这个

这东东能做什么?

视频录制啊,flash聊天室啊,在线视频会议啊啊, 网络游戏?

不管怎样先安个试试吧

先到这里下载免费的开发者版本吧

http://www.macromedia.com/software/flashmediaserver/

然后安装,安装时记得用户名和密码不要瞎填自己要记住,如果你已经瞎填了那就到 安装目录下\conf\fms.ini 里找吧

偶装到了c盘,找到目录

C:\Program Files\Macromedia\Flash Media Server 2

先要打开服务器哦

你在本机装的fms,本机就是服务器了哦!记得现在你的机器既是客户端又是服务端哦

开始===程序===Macromedia===Flash Media Server 2

有两个start****,都要打开,关时候两个都要关,如果你怕麻烦直接找tool文件夹里的批处理文件StartServerService.bat吧,双击他,他会帮你搞定地,想关就找StopServerService.bat。~

applications文件夹

你可以在里边建一个文件夹例如叫 FirstApp,这就建了一个Application,以后所有此项目服务器端的flv文件啊,共享文件啊都会在这里边,有时服务器端需要写程序的时候里边会有个main.asc 文件,这个就是服务器端程序,服务器端程序目前只支持as1写,是在服务器上执行的,你也可以用trace调试,怎么trace管理服务器时候你会看到,你可能会建若干个app,在一台服务器上同时运行,比如录象的app,聊天室的app。。。这些所有的app都通过fms自带的fms2_console.swf管理,现在就去看看如何管理服务器吧!

管理服务器~

服务器打开后就要管理了哦,点开fms2_console.swf,别看他只是个swf,后台管理就靠他了,输入你安装时候的密码和用户,服务器地址写 localhost 就好看到了吧,熟悉熟悉他吧

以后我们写程序最常用的就是这个View Applications ,每当有客户端连接服务器时,左边就会列出连接的是哪个app,有多少连接 下图为连接applications文件夹下的bs文件夹(bs文件夹,因为每个文件夹对应一个app,就是bs app),连接数为1,458是实例名(实例名默认为 _definst_ ,每个文件夹可以有若干实例,互相不影响,这个特性可以用来做聊天是的房间,以后再说)

选中某个app后,或者客户端有连接,会看到当前打开的app的状态,这个

Live Log 服务器端的trace就这里看了 ,右边依次是客户端情况 , 共享对象,流,执行的情况(占内存,cpu等),后边两个小按钮,调试时候常用哦,reload和unload!

每当服务器端main.asc修改后一定记得reload或者unload一下,否则不会生效,unload会把窗口关闭,有客户端连的时候还会自动打开

总有人告诉我,他的fms经常会出现诡异现象,比如连接不上,代码已经删了还会执行,一生气连文件夹都删了,还会执行,怀疑是自己的rp有问题。。

那不是rp问题,记住出现问题就reload !实在不行就去tools文件夹点StopServerService.bat

conf文件夹

还有重要的是conf文件夹了,里边是一些服务器端的配置文件,以后可能会用,先不用动。。。。

自此,安装部分结束,go on…

有一种协议叫rtmp

客户端和服务器端通信是使用协议rtmp的

现在在服务器端applications文件夹(当然偶的客户端和服务器端是一台机器了)里建个test1文件夹,你的地址就为

rtmp:/test1 或者 rtmp://localhost/test1

注意两个地址中的 “/ “符号

打开flash

与服务器通信首先要建个NetConnection()

nc = new NetConnection();

连接

nc.connect(“rtmp://localhost/test1”);

怎么知道连没连上呢?顺利连接服务器后会触发一个onStatus事件,自己trace一下info.code

nc.onStatus = function(info) {

//trace(info)

//trace(info.code)

for (i in info) {

trace(i+”: “+info[i]);

}

};

完整代码:

nc = new NetConnection();

nc.onStatus = function(info) {

trace(info.code);

if (info.code == “NetConnection.Connect.Success”) {

trace(“接通”);

}

};

nc.connect(“rtmp://localhost/test1”);

注意:默认情况下服务器是允许你连接的,但只是默认,如果服务器拒绝你连接的话,上述代码就不好用了。怎么回事?我们看看连接的过程吧

连接过程

每当客户端试图连接服务器,一个NetConnection.connect(),服务器将会调用application.onConnect 来鉴定是不是允许客户端连接,onConnect()方法返回null 或不返回则将进入未决状态,直到onConnect方法中返回true或执行acceptConnection(client)则允许,返回false或执行rejectConnection(client)则拒绝,如图(从左往右看)

服务器文件是以.asc形式存在的,可以在test1文件夹里建一个main.asc

application.onConnect=function(client){

this.rejectConnection(client);

//this.acceptConnection(client)

}

这样就拒绝连接了,动手试试,别忘了,服务器端改动的话,别忘了到fms2_console.swf去reload !不知道按哪个的到上边找,每当有客户端连接,那个reload按钮的界面就会出来哦。

检查是否uri错误

如果你的rtmp地址是从其他什么地方传过来的,可以顺便检查一下rtmp是否错误,下边代码如果地址是错误的就会trace出来

mync = new NetConnection();

mync.onStatus = function(info) {

if (info.code == “NetConnection.Connect.Success”) {

trace(“连接成功”);

}

};

//正确的uri

//uri = “rtmp://localhost/connect”;

//错误的uri

uri = “rtmpppppp://localhost/connect”;

if (mync.connect(uri, “N神”)) {

trace(“尝试连接服务器中。。”);

} else {

trace(“没有尝试连接服务器~是uri错误???”);

}

ok 了,现在我们深入一点点。。看看连接上的一些细节问题

info.code:

连接后info.code会告诉你连接的状态,上边看的都是NetConnection.Connect.Success, 还有一些其他值,和这些值是什么意思,自己看看。

值得注意的是。NetConnection.Connect.Rejected,收到这条消息的时候说明服务器端拒绝了你,接着马上你会收到另一条,NetConnection.Connect.Closed,连接就关闭了~~~

mync = new NetConnection();

mync.onStatus = function(info) {

switch (info.code) {

case “NetConnection.Connect.Success” :

trace(“连接成功”);

break;

case “NetConnection.Connect.Failed” :

//关掉服务器的情况

trace(“尝试连接失败,服务器有可能挂掉了 -_-b”);

break;

case “NetConnection.Connect.Rejected” :

//注意这里,服务器拒绝你的情况,如果遭到拒绝,将会调用两次mync.onStatus,

//第一次”NetConnection.Connect.Rejected”第2次”NetConnection.Connect.Closed”

trace(“遭到服务器拒绝”);

trace(“服务器返回信息:”+info.application.msg);

break;

case “NetConnection.Connect.Closed” :

trace(“连接关闭”);

break;

}

};

mync.connect(“rtmp://localhost/connect”, “N神”);

//mync.connect(“rtmp://localhost/connect”,”小新”)

服务器端拒绝连接?好象见过。。。回头找找。。。。。。。。哦在这里

application.onConnect = function(client) {

this.rejectConnection(client);

}

我不能所有人都拒绝了。。我要把讨厌的人拒绝了。。。

传给服务器一个人名~~

mync.connect(“rtmp://localhost/connect”, “N神”);

服务器看看是不是讨厌的人。。

application.onConnect = function(client, name) {

trace(name);

if (name == “N神”) {

//拒绝连接,并返回个错误对象{msg:”服务器不想”+name+”进去,哈哈~”},包含错误消息

application.rejectConnection(client, {msg:”服务器不想”+name+”进去,哈哈~”});

} else {

application.acceptConnection(client);

//成功不能返回客户端信息

}

};

看客户端的代码。。

case “NetConnection.Connect.Rejected” :

//注意这里,服务器拒绝你的情况,如果遭到拒绝,将会调用两次mync.onStatus,

//第一次”NetConnection.Connect.Rejected”第2次”NetConnection.Connect.Closed”

trace(“遭到服务器拒绝”);

trace(“服务器返回信息:”+info.application.msg);

break;

遭到服务器拒绝后会trace出服务器返回的错误消息,这是一个最基础的与服务器交互的例子,以后还会有很多滴

下边进入新一层次。。。

视频,流

这个比较重要,但超简单,网上播放电影,在线录制,在线播放,视频会议,视频电话,全靠他了 ,下边我们先做一个最简单 录制和播放

录制视频

打开flash,新建一个fla,Ctrl + L 打开library,右键新建视频,确定。

拉到舞台上起个名叫my_video

第一帧开始加代码

//从麦和设像头显示视频显示在my_video上

my_video.attachVideo(Camera.get());

my_video.attachAudio(Microphone.get());

//像以前一样连接

nc = new NetConnection();

nc.connect(“rtmp://localhost/aaaa”); //注意这里,Applications文件夹里要有aaaa文件夹哦!

//可以理解为在nc连接上绑一个流

nsOut = new NetStream(nc);

//在流上加麦克风和视频头

nsOut.attachVideo(Camera.get());

nsOut.attachAudio(Microphone.get());

//发布 2.flv

nsOut.publish(“2”, “record”);

第一个参数是文件名,后一个参数要”record”才是录制

把fla发布一下, 录一会儿,把视频关掉,打开你的

叉盘:\Program Files\Macromedia\Flash Media Server 2\applications\aaaa\

是不是多了个streams\_definst_

打开C:\Program Files\Macromedia\Flash Media Server 2\applications\aaaa\streams\_definst_

看见2.flv了吧。。

这里下载原文件 : http://www.nshen.net/blog/attachments/200601/25_163617_c1.fla

播放flv

用fms播放的flv目前是无法下载的,这可以保护你的版权 :)

打开flash,新建一个fla ,Ctrl + L 打开library,右键新建视频,确定。

拉到舞台上,这回起个名叫view ,我们来播放你刚才录的那个视频

nc = new NetConnection();

nc.connect(“rtmp://localhost/aaaa”);

res = new NetStream(nc);

//view元件要加载res流

view.attachVideo(res);

view.attachAudio(res);

//播放

res.play(“2”);

原文件 : http://www.nshen.net/blog/attachments/200602/13_223604_p1.fla

现场流

上边做的都是先录制好了视频,然后才播放,网上的实时视频会议,视频电话是怎么做的呢?总不能先录好再播放吧?

这要用到现场流,现场流是指你连接到服务器后,你在发布的同时,其他人就可以实时的看到你

很难吗?看看吧,把上边录制视频的例子拿下来

nsOut.publish(“2”, “record”); 这句改成 nsOut.publish(“2”, “live”);

把”record” 改成”live”后,就不会生成flv了,取而代之的是一个看不到的实时的视频流

ok 了,发布,这就是直播端了,同时再发布上边那个播放端,已经可以实时看见你了吧。现在你是用本机测试,等你有了服务器。其他人也能同时看见你了哦

到这里你已经可以自己做一个网页上的直播了,发布端不要让别人看到,让别人看你的播放端就好了 :) 至于为什么要用两个swf,因为目前为止你还不知道怎么样跟服务器之间传递消息,这样做可以避免这些东西,等你把后边的东西全都学完就可以在一个swf里,写个视频会议之类的东东了

远程共享

远程共享?

共享的概念就是让每个连接到服务器的swf都能实时的得到服务器端共享的数据。

一个人更改了这些数据,其他人都会看得到通知。可以想象聊天室里的发言,一个人发了以后其他人都可以看到。

共享对象

共享对象,说英文大概你比较熟ha~ SharedObject, 恩flash中有两种sharedObject,local sharedobject (LSO) 和 remote sharedobject (RSO),也就是本地共享和远程共享,偶们讨论远程的,不过之前你最好先去了解了解本地的,对你有好处…

RSO在服务器端是以文件形式存储的,扩展名是.fso,为什么不是.rso ….我也想问呢- -b

代码

初始化RSO需要先与服务器建立一个连接,续上节 ,我们先与服务器建立一个连接

//初始化远程共享要利用nc通道

var myNC = new NetConnection();

myNC.onStatus = function(info) {

if (info.code == “NetConnection.Connect.Success”) {

//成功则利用此nc初始化rso

initRSO(this);

}

};

跟以前的代码一样,只是连接成功后多了一个initRSO()函数,看不懂的回去重头再看一下。。。

下边是initRSO了,跟连接结构差不多

function initRSO(NC) {

//在服务器上建立myRSO.fso文件,第2个参数指定nc通道,第3个指定文件在服务器上持久保留,即使服务器重启了,还是有

my_rso = SharedObject.getRemote(“myRSO”, NC.uri, true);

my_rso.onSync = function(list) {

//list 是一个对象数组 ,类似这种[{name:”x”,code:”success”},{name:”y”,code:”success”}] ,下边会详细讲

//初始成功

};

my_rso.connect(NC); //连接

}

了解了吧,看一个完整的例子

画一个mc起名叫mc,在第一帧上写代码,

//初始化远程共享要利用nc通道

var myNC = new NetConnection();

myNC.onStatus = function(info) {

if (info.code == “NetConnection.Connect.Success”) {

//成功则利用此nc初始化rso

initRSO(this);

}

};

myNC.connect(“rtmp://localhost/test1”); //不会不知道要建test1文件夹吧

function initRSO(NC) {

my_rso = SharedObject.getRemote(“myRSO”, NC.uri, true);

//onSync是回调函数,每次服务器端so数据有改变,这里都会有反映!这里的意思每当有人按鼠标,这里都会有反映,我们读取so的data下的值就可以了

my_rso.onSync = function() {

mc._x=this.data.x

mc._y=this.data.y

};

my_rso.connect(NC);

}

onMouseDown = function () {

//改变so的数据

my_rso.data.x = _root._xmouse

my_rso.data.y = _root._ymouse

};

然后发布设置中设置只允许网络,发布看看

现在你可以开多个播放器窗口,点其中一个,看看其他的窗口变不变

源文件: http://www.nshen.net/blog/attachments/200601/11_145320_test3.fla

连接流程

再写一个,看起来很像在做网游~

mync = new NetConnection();

mync.onStatus = function(info) {

if (info.code == “NetConnection.Connect.Success”) {

initRSO();

}

if (info.code == “NetConnection.Connect.Closed”) {

trace(“关闭”);

}

};

function initRSO() {

my_RSO = SharedObject.getRemote(“myRSO”, mync.uri, true);

trace(my_RSO);

my_RSO.onSync = function() {

mc._x = this.data.hero.x;

};

my_RSO.connect(mync);

}

mync.connect(“rtmp:/my_app/test1”);

mc.onEnterFrame = function() {

my_RSO.data.hero.x = this._x;

if (Key.isDown(Key.LEFT)) {

this._x -= 5;

}

if (Key.isDown(Key.RIGHT)) {

this._x += 5;

}

};

写个简单的聊天室

很简单的东西,基本上就是共享对象的运用,没有用到服务器端,大型聊天室可能不会这么做,这个只适用于初学者 :/

注释很详细,不说多了,可以直接下载原文件

http://www.nshen.net/blog/attachments/200602/smallchat.fla

代码:

//用户名

myname=”游客”

//建立连接

var myNC = new NetConnection();

myNC.connect(“rtmp://localhost/smallchat”);

//搞到rso

Talk_SO = SharedObject.getRemote(“Talk”, myNC.uri, false);

Talk_SO.onSync = function() {

//先把聊天文本框清空

remoteText.text = “”;

//把聊天列表显示出来,talklist的格式就是[谁谁说:啊啊啊,谁谁谁说:2222]

var t = this.data.talklist;

for (var i = 0; i<t.length; i++) {

writeln(t[i]);

}

};

Talk_SO.connect(myNC);

//发消息函数

function post() {

//如果不存在talklist就建一个,这里没用server端,是个技巧

if (Talk_SO.data.talklist[0] == undefined) {

Talk_SO.data.talklist = [];

}

//限制数组长度,是个队列。保证里边有5条消息,当然也可以更多,但如果没有限制,flash会垮的

if (Talk_SO.data.talklist.length>=5) {

Talk_SO.data.talklist.shift();

}

//把消息装到so里

Talk_SO.data.talklist.push(myname+”说:”+meText.text);

meText.text = “”;

}

//文字显示,换行

function writeln(msg) {

remoteText.text += msg+”\n”;

remoteText.vPosition =remoteText.maxVPosition

}

//———————————————–

Btn.onRelease = function() {

post();

};

this.onKeyDown = function() {

if (Key.isDown(Key.ENTER)) {

post();

}

};

Key.addListener(this);

深入onSync

onSync有个list参数,这个开始有些难度了。不想动脑的可以跳过没影响,只是以后写出的程序效率会低点 :(

看代码:

my_rso = SharedObject.getRemote(“myRSO”, NC.uri, true);

my_rso.onSync = function(list) {//…….};

my_rso.connect(NC); //连接

在onSync回调中我们可以知道我们的my_rso被改变了,但my_rso里具体什么改变了呢? 我们就要分析这个 list 参数 了

list参数其实是一个对象数组 ,首先它是一个数组,里边装了很多对象(Object),每一个对象都包括了SharedObject中一个插槽(slot)的改动信息。我暂时给他起名叫插槽信息对象。。。这名字太猥亵了。。但我就这么叫了。。

插槽信息对象包含两个属性,name 和 code,偶尔还会有个oldValue 我不太常用,不说它

name 描述被改变的属性名

code 描述该属性的改变方式 ,有可能为以下几种值:”success” , “change” , “delete” , “reject” , “clear” ,具体含义后边说

说白了这个插槽信息对象大概就是这么个样子:

{name:”x”,code:”success”}

表示x属性被修改成功

要得到这些插槽信息对象就要for in 这个list参数

for (var i in list) {

list[i] 就是插槽信息对象

}

要分析具体so哪改变了,就是分析list[i],比如

if(list[i].code==”change”) trace(“list[i].name”+被+”change了”)

if(list[i].code==”delete”) trace(“list[i].name”+被+”delete”)

“change”是啥?“delete”是啥?

“success” , “change” , “delete” , “reject” , “clear” 具体含义:

success : 表示当前影片修改so的插槽获得了成功

change : 表示so的插槽被别人修改,或填加

也就是说,你修改so的某个属性成功了会收到 “success” ,与此同时其他影片会收到 “change”

reject : 拒绝修改

例如发生在两个或多个客户端同时要修改一个so的插槽,这时候fms会只让一个client修改,并返回”success” 其他的会收到”reject”

delete , clear : 这个好理解,一个是删除,一个是清空,看例子:

比如服务器端删除某个so

so = SharedObject.get(“某个so”);

so.lock( );

var names = so.getPropertyNames( );

for (i in names) {

so.setProperty(names[i], null);

}

so.unlock( );

这样client端会收到 若干个插槽信息对象,所有的code都为”delete”,表示若干个item被删除

然而这样:

so = SharedObject.get(“某个so”);

so.clear( );

client端就只会收到一个插槽信息对象,code属性为“clear”。

client端与server端直接交互

看完了SO,看一下client与server端如何直接进行交互的

原文件在这里:

http://www.nshen.net/blog/attachments/200602/25_152648_csc.rar

1. 客户端呼叫服务器

fla:

//客户端呼叫server端msgfromclient函数,并将返回值trace出来

mync = new NetConnection();

mync.connect(“rtmp://localhost/connect”);

//返回值接收对象

var resObj = new Object();

resObj.onResult = function(val):Void {

trace(“val”+val);

};

/*

我们用mync去call服务器端的msgfromclient函数,resObj是返回接收对象,当服务器有返回值后,会自动直接调用这个对象的onResult处理函数,后边可以传递给server无数个参数,这里只传一个字符串

*/

mync.call(“msgfromclient”, resObj, “第一个call”);

服务器端代码是放在main.asc里的,你可以到你的application下的connect目录下建一个main.asc,写代码

main.asc:

//要把函数定义到Client上!!

application.onConnect = function(client) {

/* 在这里定义也可以,在Client.prototype里定义也是可以的

client.msgfromclient=function(what){

trace(what+”进来了”)

var aa=”呼叫成功并返回结果”

return aa

}

*/

application.acceptConnection(client);

};

Client.prototype.msgfromclient=function(what){

trace(what+”进来了”)

var aa=”呼叫成功并返回结果”

return aa

}

现在去试一下吧。。。成功了的话,再继续…….

2. 服务器端呼叫指定的客户端

fla:

//server呼叫client端

//要把函数定义到nc上!!

//

mync = new NetConnection();

mync.onStatus = function(info) {

if (info.code == “NetConnection.Connect.Success”) {

trace(“连接成功”);

}

};

mync.connect(“rtmp://localhost/connect”);

mync.msgfromserver = function(msg) {

trace(msg);

};

main.asc:

application.onConnect = function(client) {

application.acceptConnection(client);

//这里呼叫刚连线成功的客户

//跟client呼叫server基本一样,服务器一般很少让client端返回值所以第2个参数设为null

client.call(“msgfromserver”,null,”服务器叫你啊”)

};

3. 服务器端呼叫所有的客户端(广播)

有些时候需要服务器广播数据给所有连接上的客户端,这里就用到了广播的概念

广播其实SharedObject的时候已经讲过了一种实现,就是把数据放到remote SharedObject中,当数据改变了,自然所有客户端都会onSync

这里再讲一种用call来实现的:

下边是很常见的一个情况,当某人下线了的时候要通知所有客户端,某某已经下线了

server端:

application.onDisconnect=function(newClient){

//遍历客户端列表,分别call他们

for(var i=0;i<application.clients.length;i++) {

application.clients[i].call(“client_fun”,null,sendvar);

}

}

Client端:

nc.client_fun=function(myvar){……. }

这个自己完善一下吧,这里就不贴fla了

还有:

关于广播,不只有服务器端广播给所有客户,还有可能某一个客户端对所有客户端直接进行广播,当然上边的例子你如果都看懂了的话,你已经可以自己做某一个客户端对所有客户端的广播了。怎么做?

第1步 某一个客户端呼叫服务器

第2步 服务器广播给所有客户端

这样就形成了,某客户端对所有客户端的广播,当然如果你能细心的耐心的看看帮助的话,你会发现Shared Object 和 NetStream都有send方法就是做这件事的,而且更为简洁,服务端不用写代码 :)

好了,看到这里,fms常用的大部分概念都说到了,这个教程也就基本结束了,想学更多的,你可能需要多翻翻手册,多找找教程,英文有不少很好的教程进阶,下边我也会贴些资源。

其他需要注意的问题:

* 中文编码:

有些时候我们用flash去读取外部的php,asp…..文件里的中文显示在flash里会出现乱码的情况,为了解决在flash里显示中文很多教程里通常都直接加了一句System.useCodepage=true

问题就在这,显示不了外部中文是因为flash内默认用Unicode编码,外部的文件大多都是gb2312,加上这句System.useCodepage=true代表强制flash使用系统默认的gb2312,这样flash就显示正确了,但fms服务器端默认也是用unicode的,这样客户端跟服务器端不同编码有时就会出错了,搜了一下server字典好象没有System.useCodepage=true了。。。所以解决办法就是去掉System.useCodepage=true,在外部php或asp中把编码转成utf-8,至于怎么转,不知道,问你的asp或php程序员吧 ,另外不要用记事本编辑你的asc文件。。即使编辑最后要一定另存为utf-8格式。

* 判断影片播放结束

ns.onStatus=function(info){

if(info.code==”NetStream.Play.Stop”)trace(“结束”)

}

乍看好象没错,但是如果设置了缓冲以后(setBufferTime)就不好用了,仔细研究了一下原因4这样的

监视onStatus(info) ,info.code:

开始播放

NetStream.Play.Start (其实还没播放)

然后缓冲(根据setBufferTime设置的秒数缓。。)

NetStream.Buffer.Full (缓冲装满了,这才开始播放)

然后播放完了

NetStream.Play.Stop (其实还没播放完)

注意了,然后还要播放缓冲 – -b

NetStream.Buffer.Empty (缓冲空了,这才播放完了。。)

群里的kinglong兄比较聪明~,先Stop的时候做个记号,然后再满足Empty才算播放完,也就是两个条件,因为网速慢也会Empty。。。好办法

但我看了一下帮助,好象有一个专门的事件通知播放结束

ns.onPlayStatus=function(info){

if(info.code==”NetStream.Play.Complete”)trace(“感谢观看帮助”)

}

* 防火墙,端口

默认安装的话默认端口是1935,管理是1111端口,记得防火墙要把1935和1111端口打开。

PHP图表制作工具集

【PHP图表制作工具集】

 

1. PHP扩展

JpGraph:http://www.aditus.nu/jpgraph/

ChartDirector:http://www.advsofteng.com/

 

2. JavaScript


Flot (http://code.google.com/p/flot/
) – Flot 为 jQuery 提供的javascript代码库. 容易使用,有特色的图表,提供交互功能(能够放大缩小数据区域等)。

Flotr (http://solutoire.com/flotr/
) – Flotr 是Prototype 1.6.0.2框架的javascript插件库。 Flotr帮助你在浏览器中创建图表,支持鼠标事件响应,放大缩小,CSS类型支持等。

Emprise JavaScript Charts (http://www.ejschart.com/
) – Emprise 是一个100% 纯 JavaScript 图表解决方案,并不需要任何 JavaScript 框架.

PlotKit (http://www.liquidx.net/plotkit/
) – PlotKit 是一个 图表和图像的Javascript 库. PlotKit 和 MochiKit javascript 库一起工作,支持HTML Canvas 和 Adobe SVG 显示 以及本地浏览器支持。尤其文档非常全。

 

3. Flash


Open Flash Chart (http://teethgrinder.co.uk/open-flash-chart/
) – Open Flash Chart 是一个 Flash 图表组件,很容易安装,提供以下语言的API: PHP, Perl, Python, Java, Ruby on Rails, and .Net 来控制图表。

AmCharts (http://www.amcharts.com/
) – AmCharts 是一个动画交互Flash图表。支持: Pie Charts, Line Charts, Scatter/Bubble Charts, Bar/Column Charts, 甚至股票图表。

PHP/SWF Charts (http://www.maani.us/charts/index.php
)
– PHP/SWF 是一个简单支持web图表的强大工具,你能使用 PHP 来收集数据,并发送给flash,支持很多图表类型: Line,
Column, Stacked column, Floating column, 3D column, Stacked 3D column,
Parallel 3D column, Pie, 3D Pie, Bar, Stacked bar, Floating bar, Area,
Stacked area, Candlestick, Scatter, Polar, Mixed.  

FusionCharts (http://www.fusioncharts.com/Free/
)
– FusionCharts 是一个跨浏览器和跨平台的flash图表组件,能够被 ASP.NET, ASP, PHP, JSP,
ColdFusion, Ruby on Rails, 简单 HTML 页面 甚至PPT调用. 几乎所有你知道的语言它都支持。

 

4. 其他


Visifire (http://www.visifire.com/
)
– Visifire 是用 Silverlight 做的,是一个开源可视化数据组件,使用Visifire你能创建动画 Silverlight
图表,支持 ASP, ASP.Net, PHP, JSP, ColdFusion, Ruby on Rails 或者 简单 HTML调用.

JFreeChart (http://www.jfree.org/jfreechart/
)
– JFreeChart 是一个开源java图表库,让开发者能够很容易在程序里面显示高质量的图表。 JFreeChart
项目从7年前便开始了,起始于 2000 年1月, 已经有四五万开发者已经使用了JFreeChart。JFreeChart
支持很多种图形文件格式: JPEG, GIF, PDF, EPS and SVG. 这对于java开发者是一个很好的资源。

flv制作工具大全

 

Collected links to Flash Video Encoding Tools & Related

这是我收集的一份列表,自认为比较完整,希望对大家有所帮助.

如果你知道更多,欢迎补充啦!

客户端编码工具(Client-Side-FLV-Encoding)

场景:拿到一个 MPG 或 AVI 文件,打算在个人电脑上转换成FLV.

1,

[1b]Sorenson Squeeze[/1b]

2,

[1b]Riva FLV Encoder[/1b]

3,

[1b]Turbine Video Encoder[/1b]

4,

[1b]Flix Exporter[/1b]

5,

[1b]Flash [/1b][1b]自带的[/1b][1b]Flash Video Exporter[/1b]

[1b]更多[/1b][1b]…[/1b]

服务器端转换工具(Server-Side-FLV-Conversion)

场景:想把 MPG 或 AVI 上传到你的服务器并自动转换成 FLV 吗 

1,

[1b]FFmpeg[/1b]

 | 

[1b]教程一[/1b]

 | 

[1b]教程二[/1b]

(Google Video 使用的就是这个东东.)

2,

[1b]Flix Engine[/1b]

 | 

[1b]教程[/1b]

 | 

[1b]范例[/1b]

3,

[1b]Turbine Video Engine[/1b]

4,

[1b]Video to Flash Console[/1b]

录像/实时广播(Record/Broadcast)

场景:想制作一个语音视频Blog满足自恋的欲望吗?

1,

[1b]RED5[/1b]

2,

[1b]Flash Media Server[/1b]

在线编码,分享视频(Online Encode & Share)

场景:想不花钱就可以在线分享你的视频吗 

1,

[1b]Google Video[/1b]

2,

本文转自:http://www.5uflash.com/flashjiaocheng/Fmsjiaocheng/2369.html

flex连asp

package asp
{
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLVariables;
	import flash.net.sendToURL;
	[Bindable]
	public class LoaderAsp
	{
		public var xml:XML;
		public function LoaderAsp()
		{
			getXML();
		}
		private function init():void{
			var url:URLRequest=new URLRequest("http://localhost/flex.asp");
			var data:URLVariables=new URLVariables;
			data.str="hello";
			url.data=data;
			flash.net.sendToURL(url);
			//flash.net.navigateToURL(url,"_self");
		}
		public function getXML():void{
			var urlLoader:URLLoader=new URLLoader();
			urlLoader.load(new URLRequest("http://localhost/getxml.asp"));
			urlLoader.addEventListener(Event.COMPLETE,onCom);
		}
		private function onCom(event:Event):void{
			var url:URLLoader=event.target as URLLoader;
			this.xml=XML(url.data);
		}
		

	}
}

  getxml.asp

<%
	response.write "<s><name>kangkangss</name><name>valuesss</name></s>"
	
%>

  flex.asp

<!--#include file="conn.asp"-->
<%
	
		
		
		sql="select * from rczp"
	 set rs=server.createobject("adodb.recordset")
	 response.write rs
	 rs.open sql,conn,1,3
	 rs.addnew
		
		
		rs("title")="fanyongkangs1"
		rs("content")="fanyongkangs1"
		
	  rs.update
	  rs.close
	  response.write "insert into"
	  response.write "hellosss"
		str=request.querystring("str")
		response.write str
%>

  app.mxml

< xml version="1.0" encoding="utf-8" >
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import asp.LoaderAsp;
			[Bindable]
			private var loadasp:LoaderAsp=new LoaderAsp;
			private function init():void{
				loadasp.getXML();
				this.http.send();
			}
		]]>
	</mx:Script>
	<mx:XML id="xmlList">
		<kangkang>
			<test>
				sadfsadf
			</test>
			<test>
				sadfsadf
			</test>
		</kangkang>
	</mx:XML>
	<mx:List dataProvider="{this.xmlList}" labelField="test">
		
	</mx:List>
	<mx:List dataProvider="{this.loadasp.xml}" labelField="..name">
		
	</mx:List>
	
	<mx:HTTPService id="http"
		 url="http://localhost/getxml.asp" 
		 resultFormat="xml">
		<mx:fault>
			<![CDATA[
				mx.controls.Alert.show("fault"+event.message);
				
			]]>
		</mx:fault>
		<mx:result>
			<![CDATA[
				mx.controls.Alert.show("result"+event.result);
			]]>
		</mx:result>
	</mx:HTTPService>
	<mx:List dataProvider="{this.http.lastResult}">
		
	</mx:List>
	<mx:Button>
		<mx:click>
			<![CDATA[
				init();
			]]>
		</mx:click>
	</mx:Button>
</mx:Application>

 

浅探跨浏览器的本地缓存解决方案

最近对于HTML5中的LocalStorage以及跨浏览器的本地存储稍微研究了下~目前来说HTML5这个API还是能在以后又很大的作用,无论是Web App的离线存储还是对于流量的节约或者是用户体验的提高都是有很好的推进作用~

 

但是市面上的浏览器貌似太多~比如像IE6 7 什么的不支持HTML5 api,于是乎就想研究下跨浏览器的本地存储~下面这张图是比较流行的跨浏览器解决方案:

具体的存储比对见这篇文章:http://blog.tugai.net/2010/01/16/browser-local-stroage/

 

cookies貌似比较小所以初期组件不考虑~

这次的初期组件编写先围绕下面的需求进行,主要还是兼容到了低版本IE,Chrome,FF浏览器,对于浏览器间的调用的Flash暂时不考虑~以后会加入~

 

 

1. userData

a) 浏览器支持:IE5+。

b) 方法:

        getAttribute()——获取指定的属性值

        load(object)——从userData存储区载入存储的对象数据

        removeAttribute()——移除对象的指定属性

        save(object)——将对象数据存储到一个userData存储区

        setAttribute()——设置指定的属性值

c) 大小限制:

        线上:单文件128K,单域名总文件大小1024K

        受限站点:单文件64K,单域名下总文件大小640K

d) 文件地址:

        XP:C:\Documents and Settings\用户名\UserData,或C:\Documents and Settings\用户名\Application Data\Microsoft\Internet Explorer\UserData

        Vista:C:\Users\用户名\AppData\Roaming\Microsoft\Internet Explorer\UserData

e) 文件存储格式:XML

f) 缺点:

        数据一直存在,除非人为删除或设置该数据的失效日期。

        数据没有加密,不安全。

2. LocalStorage

a) 浏览器支持:safari4+、firefox3.5+、IE8+、chrome4+、opera10.5+。

b) 属性:

        Length——本地存储的键值个数

c) 方法:

        getItem(key)——获取指定key的本地存储值

        setItem(key,value)——将value存储到key字段

        removeItem(key)——删除指定key的本地存储值

        clear()——清空

        key(n)——返回第几个本地存储值

d) 事件:

        storage——在存储的值改变后触发(IE8、IE9不触发,firefox需要给window对象绑定)

        事件对象属性:

1. Key:包含存储中被更新或删除的键

2. oldValue:更新前键对应的值(如果是新添加的数据,则oldValue属性值为null)

3. newValue:更新后的值(如果是被删除的数据,则newValue属性值为null)

4. url:指向Storage事件发生的源

5. storageArea:指向值发生变化的localStorage对象

e) 大小限制:5M(官方建议)。

3.      globalStorage

主要是针对FF先前版本进行

 

初期版本提供方法主要有test ,getItem ,setItem键值对 还有就是remove这几个方法。

 

代码如下:

 

/**
 * @author Leyteris.Lee
 * @date 2011.6.20
 * @modified 2011.6.23
 * @file DibyeStorage本地储存
 */
if (typeof FLOWG == "undefined" || !FLOWG) {
    var FLOWG = {};
}
FLOWG.DibyeStorage = (function(){
	
    var UserData = (function(){
        var userData = null;
        var name = location.hostname;
        
        if (!!document.all) {
            if (!userData) {
                userData = document.createElement('input');
                userData.type = "hidden";
                userData.style.display = "none";
                userData.addBehavior("#default#userData");
                document.body.appendChild(userData);
                var expires = new Date();
                expires.setDate(expires.getDate() + 365);
                userData.expires = expires.toUTCString();
            }
        }
        return {
            test: function(){
                return !!document.all;
            },
            setItem: function(key, value){
                userData.load(name);
                userData.setAttribute(key, value);
                userData.save(name);
            },
            getItem: function(key){
                userData.load(name);
                return userData.getAttribute(key);
            },
            remove: function(key){
                userData.load(name);
                userData.removeAttribute(key);
                userData.save(name);
            }
        };
    }());
    
    var LocalStorage = (function(){
        var lStorage = null;
        var domain = location.hostname;
        if (!lStorage) {
            lStorage = window.localStorage ||
            window.globalStorage &&
            window.globalStorage[domain];
        }
        
        return {
            test: function(){
                return !!lStorage;
            },
            setItem: function(key, value){
                lStorage.setItem(key, value);
            },
            getItem: function(key){
                return lStorage.getItem(key);
            },
            remove: function(key){
                lStorage.removeItem(key);
            }
        };
    }());
    
    var DibyeData = function(){
        var storeObj = null;
        var list = [LocalStorage, UserData];
        for (var i = 0; i < list.length; ++i) {
            if (list[i].test()) {
                storeObj = list[i];
                break;
            }
        }
        return storeObj;
    }
    
    return DibyeData;
})();

 

 

使用:

 

			var F = FLOWG.DibyeStorage();
			F.setItem("node","hello");	
			alert(F.getItem("node"));

 

没事在公司瞎嘟哝的~还没用将Flash本地存储加入~~以后继续完善~

 

另外再推荐一个超级牛X的本地储存库https://github.com/eliast/persist-js支持很多不同的客户端存储方案,包括 Cookie, Local Storage, Database, Google Gears, Flash 等容器,自动做出选择。

 

参考文章:

http://www.nbyum.com/ p=349

http://www.cnblogs.com/rainman/archive/2011/06/22/2086069.html

http://hi.baidu.com/hitpang/blog/item/60697710d84be7e8c2ce792b.html

http://blog.tugai.net/2010/01/16/browser-local-stroage/

http://www.planabc.net/2008/08/14/dom_storage/

http://wangye.org/blog/search/JavaScript%E6%9C%AC%E5%9C%B0%E5%AD%98%E5%82%A8/

http://hi.baidu.com/html5css3/blog/item/4034cc0e5d2b462cb0351ddb.html

http://www.dklogs.net/ p=625

  • 大小: 38.1 KB