flash、flex 项目开发学习时的笔记

之前开发一个 sns 游戏时作的笔记,后来那个游戏项目最终流产了。

 

----------------------------------------------------------------------------------------

 

ApplicationFacade 来启动整个项目

使用:ApplicationFacade.getInstance()

 

function startup( app:Object ):void 在什么情况用?

Model    层:负责操作数据模型。

使用方法:( facade.retrieveProxy( ListTopicProxy.NAME ) as ListTopicProxy ).getAllTopic();

直接使用就行了,不用又去关联 V

View    层:界面层(添加事件监听器,发送或接收Notification,直接改变示图组件的状态)

Controller 层:业务层????(Command) 这一部分关联到 M V (收到通知才执行)

FlexRgame 这个游戏中,这层好像是没有什么用的,单纯是起到注册 V 的作用)

"注册 Command" ? 就是使 "通知" command 对应起来)

 

UI 是一个元件

 

 

------------------------------------------

容器

Panel VBox 的区别?

 

borderAlpha : 透明度 (http://blog.minidx.com/2008/03/13/572.html)

 

如何使用 Embed 嵌入资源

1、titleIcon="@Embed(source='image/bulletCheck.png')"

2、[Embed(source="assets/logo.png")]
[Bindable]

public var Logo:Class; 

3、upSkin:Embed(source=”skin.swf”, symbol=”Button_upSkin”);

http://www.flashas.net/bbs/read-htm-tid-1433.html

 

如何外挂 CSS

<mx:Style source="css/standandcss.css"/>

styleName="mainbtn1"

 

<mx:Canvas/> 可以像层一样重叠?

 

对象坐标和舞台(全局)坐标 (globalToLocal)

 

4、父子窗口之间是怎样传值的?

 

5、HBox, mx.containersHBox 容器在单个水平行中布置其子容器。

mx.containers 包中具有容器类,想找什么容器应该在这里找。

6、Flex的定位

7、           了解Flex的容器
   &
http://www.pin5i.com/showtopic-19685.html

8、           DisplayObject 类是可放在显示列表中的所有对象的基类。

9、           Application.application.removechild(abc);
  Tw.removeChild(btn);
   Tw.visible = false;

 

10、    horizontalAlign、TileList 

 

11、    ProgressBar 控件为随时间而变的任务进度提供了形象化的表示。

 

12、    imageContainer.setStyle("horizontalAlign", "center");
     imageContainer.setStyle("verticalAlign", "middle");

 

13、    要实现一定的效果的包,在这里 -》 mx.effects
  
使用动态效果(Parallel and Sequence

 

14、    HBox --- 水平    VBox ----垂直

 

15、    将对象类型的数据保存到数组里,要用到 Array.push(Object)

       var Devices:Array = [];

       Devices.push(TmpObj);

       for each(var item:Object in TmpObj)

       {

               if(item.hasOwnProperty("deviceId"))

               {

                 Devices.push(item);

               }

       }
16、  比较理解一下     PopObj=PopUpManager.createPopUp((facade.retrieveMediator(ApplicationMediator.NAME) as ApplicationMediator).Component,PersonInfo_Detail,false) as PersonInfo_Detail;

           new PersonInfo_DetailMediator();

           //facade.registerMediator(new PersonInfo_DetailMediator(PopObj));

           //PopUpManager.centerPopUp(PopObj);   

           this.sendNotification(EventString.PersonInfoDetailComplete,PERSONINFO);

没有注释那些代码是会出错的。 因为还没有注册 Mediator ,所以不会发送通知。

 

17、Flex 中的正则和我平时在 JSVBS 看到的正则是不一样的。重点 g

            var Result:Array = str.match(/\w*/ig);

            while (Result != null) {

               Result = myPattern.exec(str);

            }

 

18、addEventListener实现传递多个参数:
var sayHello:String = "欢迎光临www.FlashJ.cn"
btn1.addEventListener(MouseEvent.CLICK,
   function (e:MouseEvent){
      clickHandlerWithArg(e,sayHello)
   }

);

function clickHandlerWithArg(e:MouseEvent,arg:String):void{
var out:String= e.target + "
发出事件(有参数) :" + arg;
trace(out);
}

19、理解一下:

        public function ListItem_Click(evt:ListEvent):void

       {

           var data:Array = (popubwin.DeviceList.dataProvider as ArrayCollection).list.toArray();        

           var deviceid:Object = data[popubwin.DeviceList.selectedIndex]["id"];

        AppMediator.httpService.GetDeviceInfo(int(deviceid),AppMediator.userProxy.grade); 

       }

   这里要注意toArray as Array 的区别,在这里用 as Array 得不到想要的结果。

20、现在终于有点搞清楚为什么一些载入图片的文件一放到其它的机器或网格上就显示不了的问题。“将 SWFLoader 或 Image 用于 SVG 文件时,只能在已使用 Embed 语句将 SVG 嵌入到您的应用程序中时才能加载该文件;不能在运行时通过网络加载 SVG。”

 

21、loader 和 swfloader 都可以用来加载 图片和Swf ,但我觉得还是有一点区别的。它们都有一个安全域的问题。loader 现在我们在项目中有用来加载 swf 里面的元件,而 swfloader 暂时没有用到进行这方面内容。

 

 

22、从今天开始学习 flash cs4 虽说学了那么长时间的 flex 但对 flash 还是很不了解的。和以前的 flash mx 比较 cs3有了一些新的特性,比如 动画编辑器 、缓动。(17)

学会了怎样用CS4来调试 flash 动画。(18)

今天遇到这样一个问题,“无法在类路径中找到该文档类的定义 因此将在导出时…”解决方法也很简单,只需自己手动建一个脚本文件即可。(19)

23flex httpservice  Remote object 两者是有很大不同的。

2416个常见显示对象类的继承关系图

  l       InteractiveObject 类和非 InteractiveObject
区别可不可以接受人机交互事件

 

25getDefinitionByName(name:String):Object

返回 name 参数指定的类的类对象引用。

影片剪辑.addFramescrīpt(帧数1索引值,函数1,----)

 

flash cs4 有两种动态添加元件的方法 addChildgetDefinitionByName

 

在殿堂之路看到一节内容,“让不同的库元件继承自共同的类”

26、用swfloader 来获取swf里的元件。

  var sl:SWFLoader = new SWFLoader();
sl.source = "filename.swf";
sl.addEventListener(Event.INIT, function():void{
var sl:SWFLoader = SWFLoader(evt.target);
var element:MovieClip = MovieClip(sl.content["element"]);
sl.source = element;
});

 

21、历遍数组的方法如下:

           for each(var item:Object in obj)

           {

              if(!item.hasOwnProperty("fid")){

                  continue;

              }

               FriArr.push(item);

             }

 

22、在 flex 中如何设置焦点

      popubWin.cmbType.setFocus();

 

23. flex xml

      import flash.events.Event;

      import flash.net.URLLoader;

      import flash.net.URLRequest;

 

        var xmlLoader:URLLoader = new URLLoader();

       xmlLoader.load(new URLRequest("libs/classXml.xml"));

       if(xmlLoader.hasEventListener(Event.COMPLETE))

           xmlLoader.removeEventListener(Event.COMPLETE,onXMLCompeleted)

       xmlLoader.addEventListener(Event.COMPLETE,onXMLCompeleted);   

 

        private function onXMLCompeleted(evt:Event):void

       {

          var xml:XML = new XML(evt.currentTarget.data);      

          var imgSrc:String = xml.classes.(@name==mmID).@lib;

        }

 

        读取后又如何去解析 xml

        请参看这篇文章

http://www.cnblogs.com/yangrui/archive/2008/03/24/1119124.html

这篇文章里面有部分内容是错的,正解的解析方法如下

          var xml:XML = new XML(evt.currentTarget.data);      

           var node:XMLList = xml.AdornmentTypes.AdornmentType ;

           for(var i:int=0;i<node.length();i++)

          {

              var nodexml:XML = node[i];

              var tpeName:String = nodexml.@name;

    }

 

 

24. TabNavigator 选项更改触发事件。

Component.UserTabNav.addEventListener(IndexChangedEvent.CHANGE,indexChangeHandler);

 

25. 创建关联数组

     关联数组就是 object

     我想应该是我理解错了

 

       public var TradeType:ArrayCollection = new ArrayCollection(

           [{label:"全 部", data:null},

            {label:"装饰品", data:"A"},

            {label:"工艺品", data:"B"},

            {label:" ", data:"C"},

            {label:" ", data:"D"}]) ;

 

26. TabNavigator 里面的选项只要选择了,以后就不用再请求了!

 

27. 平时用FLASH写元件,一般都是右击选择属性对AS程序文件进行绑定.今天在一英文书籍上找到另外一种方法.方法如下,直接用程序进行绑定.

    [Embed(source='http://www.cnblogs.com/http://www.cnblogs.com/assets/assets.swf', symbol='AvatarCustomizationScreen')]

    public class AvatarCustomizationScreen extends MovieClip {

今天没有什么任务大部分时间都是在学习 google reader ,磨刀不误X柴工!

 

28. 理解 dispatchEvent(notClickEvent); 的作用

其实自定义的事件都是由原基本的事件来达到的.

panel 组件的示范代码

       closeButton.addEventListener(MouseEvent.CLICK,closeButton_clickHandler);

      private function closeButton_clickHandler(event:MouseEvent):void

       {

             dispatchEvent(new CloseEvent(CloseEvent.CLOSE));

       }    

   事件机制在动画制作过程中有很重要的位置.

   用这个方法可以将一些操作在外部实现。

 

29. 当要在界面页面携带一些数据可通过如下的方式

   <mx:Button label="升级" data="{data}" click="outerDocument.UpgradeEvent(event)"/>

 

 

30. 新建一个 object 对象,初始化赋值不能用 null 。否则写不入数据!

31. NumericStepperEvent.CHANGE 事件赋值引起的死循环!

32.人物行走研究

    将地图分成 40 * 40 !

33. 昨天试了一下用 Post 的方式来提交,没有成功,今天参考了其它文章,终于可以了。

       delService = new HTTPService();

       delService.method = mx.messaging.messages.HTTPRequestMessage.POST_METHOD;          delService.resultFormat = HTTPService.RESULT_FORMAT_TEXT;

       delService.url = confing.Domain + confing.PhotoDelUrl;

       delService.addEventListener( ResultEvent.RESULT, onDelResult );

       delService.addEventListener( FaultEvent.FAULT, onDelFault );

       delService.send( new URLVariables("fileName="+ data +"&ran="+Math.random()) );     add.addEventListener(MouseEvent.CLICK,upload);  

 

 

分析 Super :

 

Main.as

项目主文件。加载地图和人物数据,添加事件监控:键盘按钮监控、到达关数监控、游戏结束监控。

Hero.as

人物类。主要是监控键盘操作,处理键盘事件。

有三种检测:空中检测、下落检测和碰撞检测。

function spring()  ----  玛丽踩到蘑菇怪时弹起的处理函数。

 

posted @ 2010-04-21 16:56  chy1000  阅读(748)  评论(0编辑  收藏  举报