AS3开发经验总结

AS3开发经验总结
2010年01月23日
  [b]案例1. 2010-01-23 项目:ZAJBQCMD_PYFE[/b]
  问题:点击已设置名称为nameX的Loader对象通过 event.currentTarget.name获得名称为instanceXXX;
  原因: 错误的先添加事件监听后设置名字
  原错误code:LoaderObj.addEventListener(MouseEvent.CLICK,methodX);
  LoaderObj.name="nameX";
  正确code:LoaderObj.name="nameX";
  LoaderObj.addEventListener(MouseEvent.CLICK,methodX);
  [b]案例2. 2010-01-25 项目ZAJBQCMD_WORDGAME[/b]
  问题:code描述
  step1 读取xml在方法method1中
  var urlReq:URLRequest=new URLRequest("wordData.xml");
  var urlLoader:URLLoader=new URLLoader();
  urlLoader.load(urlReq);
  urlLoader.addEventListener(Event.COMPLETE, initWordStruts);
  step2 获得xml数据信息,其中wordStrutArray为ArrayList(ArrayCollection同样)
  private function initWordStruts(event:Event):void
  {
  var dataXML:XML=new XML(event.target.data);
  var dataXMLList:XMLList=dataXML.wordstrut;
  for each (var wordXML:XML in dataXMLList)
  {
  var wordDemo:Object=new Object();
  wordDemo.word=wordXML.word;
  wordDemo.sheng=wordXML.sheng;
  wordDemo.yun1=wordXML.yun1;
  wordDemo.yun2=wordXML.yun2;
  wordDemo.soundLevel=wordXML.soundlevel;
  wordDemo.soundPS=wordXML.soundps;
  wordStrutArray.addItem(wordDemo);
  }
  }
  step3 获得数据操作
  var currentWordStrut:Object=wordStrutArray.getItemAt(index);
  var words:String=currentWordStrut.sheng + currentWordStrut.yun1 + currentWordStrut.yun2;
  现象1.此时输出words;Alert.show(words);
  获得的信息为abc 为 xml格式
  2.输出currentWordStrut.sheng值,Alert.show(currentWordStrut.sheng);
  结果为a
  为获得正常的"abc"目前解决办法:
  var shengword:String=currentWordStrut.sheng;
  var yun1word:String=currentWordStrut.yun1;
  var yun2word:String=currentWordStrut.yun2;
  var words:String=shengword + yun1word + yun2word;
  此时输出words的值,Alert.show(words);
  结果为"abc";
  [b]案例3. 2010-01-25 项目ZAJBQCMD_WORDGAME[/b]
  将for each (... in ...)用于自定义类
  自定义类:ThreeAlphabetBoxStruts
  package
  {
  public dynamic class ThreeAlphabetBoxStruts
  {
  public var clipBoxOne:String="boxThreeAlphabetOne";
  public var clipBoxTwo:String="boxThreeAlphabetTwo";
  public var clipBoxThree:String="boxThreeAlphabetThree";
  public function ThreeAlphabetBoxStruts()
  {
  }
  }
  }
  错误做法:使用for each (var attributeValue in Object)遍历对象属性值
  private var threeAlphabetBoxStruts:ThreeAlphabetBoxStruts=new ThreeAlphabetBoxStruts();
  for each (var a:String in threeAlphabetBoxStruts)
  {
  Alert.show("boxname:" + a);
  }
  结果:无结果出现
  原因: for each ( in ) 只能用于动态类的动态属性, clipBoxOne,clipBoxTwo,clipBoxThree在类定义时已经定义
  正确做法
  threeAlphabetBoxStruts.name="hcl";
  for each (var a:String in threeAlphabetBoxStruts)
  {
  Alert.show("boxname:" + a);
  }
  结果:显示出结果,字符串:boxname:hcl
  [b]案例4. 2010-01-25 项目ZAJBQCMD_WORDGAME 使发布的SWF可访问本地资源(如XML文件)[/b]
  只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源.
  flex项目上点右键-->properties-->ActionscriptCompiler-->Additional compiler arguments
  加上 “ -use-network=false ”
  SecurityError: Error #2028: 仅限于文件系统的 SWF 文件 file:///C|/Documents%20and%20Settings/Administrator/桌面/176854%5F1%5F0%5F1.swf 不能访问 Internet URL http://client.joy.cn/flvplayer/xml/adtemp.xml。
  at flash.net::URLStream/load()
  at flash.net::URLLoader/load()
  at model::AdTemp/GetXMLData()
  at model::AdTemp()
  at com::FlvPlayerManager/RenderUI()
  at com::FlvPlayerManager()
  at com::MiddleTier$/get FlvManagerInstance()
  at com::DocumentClass()
  可以设置一下FlashPlayerTrust 配置文件, 使得swf文件被授予完全访问权限
  引用:
  Windows:app data\Macromedia\Flash Player\#Security\FlashPlayerTrust
  (例如,C:\Documents and Settings\JohnD\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust)
  Mac:app data/Macromedia/Flash Player/#Security/FlashPlayerTrust
  (例如,/Users/JohnD/Library/Preferences/Macromedia/Flash Player/#Security/FlashPlayerTrust)
  Security.sandboxType 属性
  SWF 文件的作者可以使用只读的静态 Security.sandboxType 属性来确定 Flash Player 向其分配该 SWF 文件的沙箱类型。Security 类包括表示 Security.sandboxType 属性可能值的常量,如下所示:
  Security.REMOTE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值