存档

2008年10月 的存档

在Flex 3 中制作多语言资源

2008年10月31日 评论已被关闭

也许你在项目的制作会遇到要制作多语言版本的网站或者软件,在这里记录了,我正在制作的多语言flex网站的制作步骤,可以时实切换:(这里我只用到英文和中文)

制作相应的多语言包

在项目下面建立locale 目录,在locale目录中建立en_US和zh_CN两个目录

在en_US目录中建立一个文件,名为:lang.properties

在lang.properties文件里面写入需要用到的资源:

link_bar_home=HOME
link_bar_product=PRODUCT
link_bar_myblog=MY BLOG
link_bar_photo=PHOTO
link_bar_guestb=GUEST BOOK

………………………..

 

把en_US目录下的lang.properties拷贝到zh_CN目录下,把里面的值改一下:

link_bar_home=主页
link_bar_product=我的作品
link_bar_myblog=我的博客
link_bar_photo=相册
link_bar_guestb=留言簿

……………………………..

现在资源准备好了,就开始把它编译为swf文件,这样我们就可以在运行的时候实时切换我们所需要的版本

  • mxmlc -locale=en_US -source-path=locale/{locale} -include-resource-bundles=lang -output src/en_US.swf
  • copylocale en_US zh_CN
  • mxmlc -locale=zh_CN -source-path=locale/{locale} -include-resource-bundles=lang -output src/zh_CN.swf

最后在应用程序中加载:

private var langindex:int=1

private var locales:Array = ["en_US","zh_CN" ];

var url=locales[langindex]+".swf";
var ev:IEventDispatcher=ResourceManager.getInstance().loadResourceModule(url);
ev.addEventListener(ResourceEvent.COMPLETE,rescomplete)

private function rescomplete(e:ResourceEvent):void
{
    ResourceManager.getInstance().localeChain=[locales[langindex]]
}

分类: 生活杂谈 标签:

NativeMenu 的displaying事件

2008年10月22日 评论已被关闭

今天在制作的过程中,想制作这样一种效果:
右键点击a的时候,根据a的值来动态的显示相应的上下文菜单(菜单项目)

但是碰到这样一个问题:

当把NativeMenu设置为某个对像的contextMenu属性做为上下文菜单的时候,displaying事件侦听不到

但是把NativeMenu设置为NativeWindows的menu的时候displaying事件能侦听到,不知道其它人有没有碰到过这种问题,现在是无解啊,郁闷中~~,只能多走些弯路来达到想要的效果了。

分类: 生活杂谈 标签:

解决Cannot modify header information – headers

2008年10月19日 评论已被关闭

今天在编写一个wordpress小插件的时候,在点击禁用的时候,碰到了Cannot modify header information 提示信息,经过搜索找到了解决办法:

  • 在Dreamweaver CS3中打开文件,按ctrl+j 打开页面属性,选择标题/编辑选项,Unicode 标准化表单中选择玩,去掉ROM前面的勾,然后再保存文件,就可以了。
  • 还有一点就是:<?php … <?> 前面不要用空白符
分类: 生活杂谈 标签:

日本牛人的flash 3D作品

2008年10月17日 评论已被关闭

很早以前有看到过,没有记录。

http://temp.roxik.com/datas/max2007/index.html

分类: 生活杂谈 标签:

(转)盗版微软XP系统防止20号出现黑屏及出现黑屏后的解决办法

2008年10月17日 评论已被关闭

方法一:
关闭自动更新(需要升级xp系统补丁的话,我们可以利用360安全卫士等第三方软件来升级)
具体操作为:右键单击“我的电脑”-“属性” ,在系统属性窗口中选择“自动更新”选项卡,在“通知设置”一栏选择“关闭自动更新”一项。
方法二:
第二,“我的电脑”点右键,选“管理”,点左边“服务和应用程序”旁的加号,展开,点“服务”。
或者直接在“运行”中输入“Services.msc”打开服务设置窗口。
在“服务”列表中,找到“AutomaticUpdates”这一项,双击,弹出的属性窗口中,“启动类型”设置为“已禁用”,确定即可。
方法三:
开始-运行-输入REGEDIT回车,在左边栏中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\NotifyWgaLogon项,将整个WgaLogon项删除即可。以上为经过测试的最简便方法。
这次的WGA与上次相比只增加了LegitCheckControl.dll,主要执行方式(通过WINLOGON加载)未变。显然微软此举可归为常规性不定期“恐吓”,此举也是对于盗版的无奈。
方法四:

@echo off
sc stop wuauserv
sc config wuauserv start= disabled
另存为bat格式的文件后运行。
如果20号以后出现每小时黑屏一次的情况,用下面的方法:

@echo off
sfc /purgecache
reg delete “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\Wgalogon” /f
taskkill /f /im WgaTray.exe /T
del c:\Windows\system32\WgaTray.exe /f /q
taskkill /f /im WgaTray.exe /T
del c:\Windows\system32\WgaTray.exe /f /q
taskkill /f /im WgaTray.exe /T
del c:\Windows\system32\WgaTray.exe /f /q
taskkill /f /im WgaTray.exe /T
del c:\Windows\system32\WgaTray.exe /f /q
taskkill /f /im WgaTray.exe /T
del c:\WINNT\system32\WgaTray.exe /f /q
taskkill /f /im WgaTray.exe /T
del c:\WINNT\system32\WgaTray.exe /f /q
taskkill /f /im WgaTray.exe /T
del c:\WINNT\system32\WgaTray.exe /f /q
echo. & pause

把上面的复制到记事本里保存,把记事本的后缀TXT改成BAT,然后运行.
此方法供参考.

分类: 生活杂谈 标签:

在线安装Adobe Flash Player version 10.0.12.36

2008年10月16日 评论已被关闭

Adobe Flash Player version 10.0.12.36

http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=DXLUJ

Adobe Flash Player 10最主要的新特性有:

  • 支持3D效果、
  • 自定义滤镜和效果、
  • 支持高级文字、
  • 动态音效生成、
  • 绘图API接口、
  • 硬件加速、
  • 矢量数据类型、
  • 动态流、
  • Speex音频编解码器、
  • 文件上传下载API接口
  • ……
分类: 生活杂谈 标签:

(转)socket的服务端框架

2008年10月15日 评论已被关闭

socket的服务端框架

1 QuickServer
  QuickServer则同时支持blockingIO和nio,需要进行配置选择,QuickServer提供了另外一个非常实用的功能-管理服务端口,通过其设定的一些指令查询服务器的状态、控制服务器等。此功能成为最后选择的最大优势。其他例如IP过滤的功能在QuickServer中只需要进行配置即可。
  QuickServer 多用于应用程序的服务端。
地址:http://www.quickserver.org
2. xscocket
xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。
地址: http://www.xsocket.org/
资料比较少,代码精简。
demo代码
http://blog.csdn.net/wind520/archive/2008/09/02/2865039.aspx

3. Mina
MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架。通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中。MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、Apache Qpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等。MINA框架当前稳定版本是1.1.6,最新的2.0版本目前已经发布了M1版本。
MINA框架的特点有:基于java NIO类库开发;采用非阻塞方式的异步传输;事件驱动;支持批量数据传输;支持TCP、UDP协议;控制反转的设计模式(支持Spring);采用优雅的松耦合架构;可灵活的加载过滤器机制;单元测试更容易实现;可自定义线程的数量,以提高运行于多处理器上的性能;采用回调的方式完成调用,线程的使用更容易。

官方站点:http://mina.apache.org/
很多开源项目直接使用mina,如red5,SGS,资料丰富。

4. SFS
商业软件,http://www.smartfoxserver.com.cn
SmartFoxServer 是基于高效和可升级的结构,可以在单CPU服务器机子上处理数千的客户端. 我们还可以通过设置不同的线程选项,来最优的使用系统资源.我们对于不同的硬件做过大量的测试(从 P2-350Mhz 到 双核 64bit 机器). ( 获取更多信息 请参考 基准白皮书 . ) 很多公司和游戏机构都已经使用 SmartFoxServer 开发出了很多高质量的在线多玩家应用及游戏.

5 SGS
个人认为这个是最好的开源服务端。中文资料很少,还在了解中。

Sun game server , 简称 (sgs) 是 sun 公司的一个开源项目 , 主要目标是针对 mmo 游戏的服务器端开发

sun game server(sgs)http://www.projectdarkstar.com/

分类: 生活杂谈 标签:

在TabBar中添加图标

2008年10月10日 评论已被关闭

在TabBar中添加图标

<mx:TabBar dataProvider=”viewstack1″>

<mx:ViewStack x=”0″ y=”0″ id=”viewstack1″ width=”100%” height=”100%”>
<mx:Canvas label=”主页” width=”100%” height=”100%” icon=”{ICON.ico_home}”>
</mx:Canvas>
<mx:Canvas label=”邮件” width=”100%” height=”100%” icon=”{ICON.mail}”>
</mx:Canvas>
<mx:Canvas label=”日历” width=”100%” height=”100%” icon=”{ICON.calendar}”>
</mx:Canvas>
</mx:ViewStack>

QQ截图未命名.jpg

分类: 生活杂谈 标签:

下载Flash Player 10

2008年10月9日 评论已被关闭

(译)Learning Flash Media Server 3中文版-第6章之3/7

2008年10月8日 评论已被关闭

建立一个最简单的广播工作室是一个很简单的操作,要求只不过是一个模块与送出现场的音频和视频流。为了使它更容易,特别是在最后,这种应用程序包括一个可重用的类,只不过是为设置流出和流入的流。这个类工作起来,就像一个实用工具类,您可以重新使用,以简化创建流式音频/视频的工作。

6.3.1.公用流类

第一步是建立公用类让音频和视频流可以简单的工作。它使用以下列几类:

Classes
NetConnection
NetStream
Camera
Microphone
Video

这个公用类是扩展NetStream类,这个类有两个公共的方法:一个是流a/v出去(streamOut),一个是流进来(streamIn)。记住,一个流需要一个麦克风实例、一个摄像头实例、一个流的名称。streamOut方法的参数就是这三个元素。

反过来,要播放进来的视频,所有你所需要的是视频对象的名称和流的名称。

因为这首先是最低限度的应用,只有视频流出来,您可能感到奇怪,为什么理会streamIn方法呢?这个类的目的是:不是让一个应用程序更好的开发,而是多个。

在稍后的章节,您将了解如何创造一个“receiver”,像电视机一样工作,而且您将高兴地看到, streamIn方法包括在内。

最后,一个元素你可能不熟悉,是super语句。此公用类是扩展NetStream类。创造一个NetStream实例,你需要包含NetConnection参数。Super语句调用父类的NetConnection,所以,当你建造一个StreamAV实例,您可以包含必要的NetConnection参数。按照下列步骤创建此公用类。

  1. 建立一个StreamAV.as.
  2. 添加以下的代码

Example 6-2. StreamAV.as

package
{
  import flash.net.NetConnection;
  import flash.net.NetStream;
  import flash.media.Camera;
  import flash.media.Microphone;
  import flash.media.Video;
  public class StreamAV extends NetStream
  {
        public function StreamAV (nc:NetConnection)
        {
             super (nc);
        }
        public function streamOut (mic:Microphone,cam:Camera,stream:String):void
        {
             this.attachAudio (mic);

             this.attachCamera (cam);

             this.publish (stream,"live");

        }
        public function streamIn (vid:Video,stream:String):void
        {
             vid.attachNetStream (this);
             this.play (stream);
        }
  }
}
6.3.2.基本的播出演播室

第一个Studio模块非常简单。只是显示"TV Anchor"(你)和”on the air”消息,让你知道你已经连接了。第5章中展示了怎么流进来和流出去。这个模块是简单的流出去-使用StreamAV类帮忙。

Classes

NetConnection

NetStatusEvent

Camera

Microphone

Video

Sprite

TextField

StreamAV

为什么NetStream类没有列在这个应用程序中?因为你将用新的公用类StreamAV处理。在Broadcast和TV 两个应用程序中,使用StreamAV类。

以下介绍建立一个studio的最少步骤:

1. 在MS3的applications目录中建立一个名为studio的目录

2. 建立一个Broadcast.fla与StreamAv.as同一目录

3. 可选,用一个照片来作为studio的背景,或者用flash画一个。使用矩形工具在背景上面画一个矩形,宽200高150,位置为x=150,y=190。这将作为监控屏幕。在左上角的位置,添加了第二个矩形与尺寸为W = 75 ,为H = 21 ,为Y = 21 ,为Y = 68.5 。图6-1显示了总体思路,和图6-2显示什么,您会看到当您执行该脚本。

图6-1. Studio backdrop

clip_image002

4. 建立一个Broadcast.as与StreamAV.as和 Broadcast.fla同一目录

5. 在Broadcast.as文件中添加以下代码

Example 6-3. BroadCast.as

package
{
  import flash.net.NetConnection;
  import flash.events.NetStatusEvent;
  import flash.media.Camera;
  import flash.media.Microphone;
  import flash.media.Video;
  import flash.display.Sprite;
  import flash.text.TextField;
  public class Broadcast extends Sprite
  {
        private var nc:NetConnection;

        private var cam:Camera;

        private var mic:Microphone;

        private var vid:Video;

        private var rtmpNow:String;

        private var onAir:String;

        private var broadcast:StreamAV;

        private var good:Boolean;

        private var txtField:TextField;
        public function Broadcast ()

        {

             //Set Camera and Microphone
             nc=new NetConnection ;

             nc.addEventListener (NetStatusEvent.NET_STATUS,checkConnect);

             cam=Camera.getCamera();

             cam.setMode(240,180,15);

             cam.setQuality(0,85);

             mic=Microphone.getMicrophone();
             mic.rate=11;

             vid=new Video(240,180);
             vid.x=150;
             vid.y=90;
             addChild(vid);

             txtField=new TextField();

             txtField.x=150;

             txtField.y=75;

             addChild(txtField);

             rtmpNow="rtmp://192.168.0.11 /studio";

             nc.connect (rtmpNow,"anchor");

        }
        //Connection

        private function checkConnect (e:NetStatusEvent)
        {
             good=e.info.code == "NetConnection.Connect.Success";

             if (good)
             {

                   txtField.text="On The Air";

                   broadcast=new StreamAV(nc);

                   vid.attachCamera (cam);

                   broadcast.streamOut (mic,cam,"presentation");
             }
        }
  }
}

当你运行这个模块,你将会看到你自已在监视器中和一个"on the air"信息指示你已连接到服务器了。这个单个的流从你当前的摄像头和麦克风中发出。

图6-2. Broadcast studio

clip_image004

你现在有一个广播室,您需要一个模块来接收串流的材料。这基本上是电视,用户可以观赏到您的视频。

6.3.3.最简单TV

如果您认为最简单工作室是很容易,最简单TV会更容易。所有您需要的是一个视频对象在舞台和您良好的路要走。这些最基本元素,是您需要的类:

Classes

NetConnection

NetStatusEvent

Video

Sprite

StreamAV

像studio,你可以简单的制作你的TV或者精心的制作。我使用了一个老式的TV作为背景,然而在其它方面,它是简单地完美,按以下这些步骤来建立TV:

  1. 建立一个fla文件,舞台尺寸为360X350
  2. 你可以把舞台设置更小,但是不能小于215X138。小于那个尺寸的话,就会小于设置窗口,不能工作了。对于这个特别的应用程序,不要让它小于215X150,因为你的视频大小是200X150。还是把它设大点的好。我是基于TV图像的尺寸来定制这个尺寸的。
  3. 保存TV.fla与StreamAV.as文件同一目录。如果你想把TV和Broadcast模块分开来在不同的目录中,也可以,确保每个目录包含Stream.as文件
  4. 可选,建立一个TV背景,如图6-3所示

图6-3. Stage for TV module

clip_image002[4]

5. 建立一个TV.as文件,与TV.fla同一目录

6. 在TV.as文件中添加以下代码

Example 6-4. TV.as

package
{
  import flash.net.NetConnection;

  import flash.events.NetStatusEvent;

  import flash.media.Video;

  import flash.display.Sprite;

 

  public class TV extends Sprite

  {

        private var nc:NetConnection;

        private var vid:Video;

        private var rtmpNow:String;

        private var tvSet:StreamAV;

        private var good:Boolean;

 

        public function TV()

        {

             nc=new NetConnection ;

             nc.addEventListener (NetStatusEvent.NET_STATUS,checkConnect);

             vid=new Video(200,150);

             vid.x=81;

             vid.y=76;

             addChild (vid);

             rtmpNow="rtmp://192.168.0.11 /studio";

             nc.connect (rtmpNow,"viewer");

        }

 

        //Connection

        private function checkConnect (e:NetStatusEvent)

        {

             good=e.info.code == "NetConnection.Connect.Success";

             if (good)

             {

                   tvSet=new StreamAV(nc);

                   tvSet.streamIn (vid,"presentation");

             }

        }

  }

}

当你完成,测试你的广播系统。首先,加载Broadcast模块和运行它。一旦显示“on the air”,你可以准备运行TV模块了。如果你的TV显示从Studio模块广播过来的图像,每个东西都在工作中。同样地,你可也可以听到从stiduo发过来的声音。

图6-4. Studio stream seen on TV module

clip_image004[4]

你可能注意到了,在脚本中NetConnection.connect()的参数包含一个额外的值。直到现在,你看到在connect()方法中是应用程序的名称(例如,studio)。两个模块都有一个可选的参数。在这里,这个可选参数指示了用”anchor”或者”viewer” 作为标记。依赖于哪个模块正在运行。在服务端,你将会在下一节中学习到,这个可选参数(唯一的)帮助指示谁正在使用应用程序。可能你想要限制谁可以和不可以使用你的应用程序,使用第二个参数与用户识别码,可以非常方便。