胡矿的Blog

August 30, 2007

Filed under: AsWing 教程 — thiswind @ 1:25 pm

AsWing 入门教程 1.2 创建框架

作者:胡矿, iiley

著作权所有,请勿转载

www.flashseer.org

Google doc

http://docs.google.com/Doc?id=dnp8gdz_4cnpjqp



AsWing当中的顶层窗口(即那些没有包含在其它窗口当中的窗口)被称作框架(JFrame)。他从JWindow扩展而来,是少数几个不绘制在画布上的AsWing组件之一。


注意

大部分AsWing组件类的名字都已“J”开头,如JButton、JFrame等等。


框架是一种容器。这意味着一个框架可以容纳按钮、文本域登其它用户界面组件。本节中,我们要研究AsWing JFrame 的常规用法。

例1.1-1是一个简单的程序,它在屏幕上显示一个空的框架,如图1.1-1所示。

(图1-1 )

例1.1-1:SimpleFrameTest

package

{

import flash.display.Sprite;

import org.aswing.AsWingManager;

import org.aswing.JFrame;

public class SimpleFrameTest extends Sprite

{

public function SimpleFrameTest()

{

AsWingManager.initAsStandard(this);

var frame:SimpleFrame = new SimpleFrame();

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

frame.show();

}

}

}

import org.aswing.JFrame;

class SimpleFrame extends JFrame

{

public function SimpleFrame()

{

this.setSizeWH(DEFAULT_WIDTH, DEFAULT_HEIGHT);

}

public static const DEFAULT_WIDTH:uint = 300;

public static const DEFAULT_HEIGHT:uint = 200;

}

下面我们逐行研究这个程序。


AsWing被放在org.aswing包中。这不是AS3.0的核心层次的一部分,而是一个第三方扩展。

默认情况下,框架的尺寸和其它组件一样是没有意义的0×0像素。我们定义了子类 SimpleFrame,它的构造器把框架的大小设为300×200像素。在SimpleFrameTest的构造函数当中(注意,Flex项目的程序入口不再是MTASC时代的main函数,而是Sprite的构造函数),我们从构造一个SimpleFrame对象开始。

接着,我们定义了用户关闭框架时的响应动作。对本程序而言,我们只是简单地销毁该框架。选择该行为的语句是:
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

因为A3的DisplayObject可以remove了然后再add,所以Dispose了之后也可以再show而不用重新创建元件。所以默认情况下,当用户关闭一个框架的时候,框架就会被销毁(Dispose),你也可以通过设置此属性为JFrame.HIDE_ON_CLOSE或者JFrame.DO_NOTHING_ON_CLOSE让框架在被点击关闭按钮时隐藏或者什么都不做。

简单地构造一个框架并不能显示它。框架在建立时是不可见的。这使得程序员有机会在框架初次显示前为其添加一些组件。为了显示框架,我们需要调用框架的show方法。


笔记

JFrame 类继承了超类 JPopup 当中的 show 方法。在内部实现上show方法是直接调用了setVisible(true),你也可以通过调用setVisible(true)来显示框架,效果是一样的。

对于普通组件,默认是visible=true的,所以通常不用再调用setVisible(true)


图1.1-1展示的是一个运行中的程序——只有一个很枯燥的顶层窗口。在图中可以看到,标题栏和外框修饰部件,比如大小化按钮。他们的样式都是由特定的主题(LookAndFeel)所决定的。



Filed under: AsWing 教程 — thiswind @ 1:23 pm

AsWing 入门教程 1.1概述

作者:胡矿

著作权所有,请勿转载

www.flashseer.org

Google doc

http://docs.google.com/Doc?id=dnp8gdz_5wmf725



Flash 刚出现的时候,主要的应用是用来做动画,比如MTV、短片、广告等类。从 Flash4 开始支持 ActionScript 脚本,不过那时候的脚本主要是用来控制动画播放的。

到了FlashMX 的时候,整个 Flash 上了一个很大的台阶,ActionScript 脚本支持变得很完善,这时候出现了一本影响很深远的书:《Robert Penner’s Programming Macromedia Flash MX》,书里的例子展示了ActionScript的巨大潜力。

ActionScript1.0是“基于对象”的语言,里面一切都是对象,没有“类(class)”的概念,如果需要一个新的概念,那么就必须通过修改一个现有的类的 Prototype(原型) 来实现,总的来说,整个设计思想仍然是过程化的。


在2004年Macromedia 推出了FlashMX2004,也就是 Flash7,里面包含了面向对象的 ActionScript2.0,于是大家可以定义自己的类,可以用主流的面向对象思想来开发脚本,ActionScript的功能强大了很多,脚本逐渐从过去作为动画的补充开始走向台前。

从 Flash7 一直到 Flash8,脚本的图形编程所能使用的组件主要是 Macromedia 自己开发的 Version 2 Components(V2组件)这是一个很大的进步,从此Flash也可以用代码编写应用界面了,但是由于 V2组件 的效率不高,资源占用很大。加上整个架构不是很好,所以用 V2 一直无法开发有一定规模的应用,虽然RIA时代已经逐渐到来,但是缺乏一套关键的界面组件,使得Flash落后与Ajax。

在 2005年年末 的时候,我在网上寻找界面组件,无意中找到了AsWing,看了示例之后感到很惊喜,这就是我所要寻找的东西。这就是用 ActionScript2.0 编写的 AsWingA2版本。当时的 OSFlash 很热闹,随着开源的 MTASC 编译器出现,ActionScript2.0的编译速度大大提高,大型AS项目的开发成为可能,各种项目如雨后春笋一般迅速出现,比如:AS2Lib、FlashMill、Sandy以及ASDT、Flashout、FDT等一大批开源项目,AsWing就是在那个时候出现的众多项目之一。

从2005年一直到2007年,AsWing AS2.0 版本的开发完成,iiley在2007年的四月发布了 AsWing A2 1.0 版本(http://www.aswing.org/?p=31)。之后AsWing的开发转移到ActionScript3.0

在2006年和2007年,AS世界发生了很重要的一些事情,ActionScript3.0 以及 FlashPlayer9 的出现,使得AS的运行效率大大提高,很多过去很慢的事情,现在变得很快,过去很多几乎无法实现的功能现在可以做到了。

现在的 AsWing 是 AS3.0 的版本,在2007年6月14号第二次开源Flash大会(OFlA2)上,iiley 发布了 AsWingA3 1.0 版本(http://www.aswing.org/?p=154)。同时发布的还有 SkinBuilderLAF。

没有用过 AsWingA2 的人也许会感到奇怪,为什么一个 LAF(LookAndFeel)也会被提出来讲。这要讲一下有关AsWing的一些相关的知识。

AsWing 是用 ActionSctipt 实现的 java Swing ,整个架构以及API的设置都是参照 Swing。当然,对于界面主题(Look and feel) 的设计也是参考Swing,所有的图形元素都是用代码绘制的。这就造成了对主题的修改非常复杂。As2 的非官方主题比较完善的有 F1 的三套 LAF。

到了 AS3 的时候,iiley 针对大家提出的修改主题的问题,专门开发了 SkinBuilderLAF,只要通过替换 png 图片就可以修改主题,主题制作简单了很多。后来又发布了用于 FlashCS3 的 AeonLAF 主题。(AeonLAF 主题也可以使用在 FlexBuilder 当中,见 AsWingA3 for flex 版本)

总而言之,AsWing是比Flash或者Flex的组件更强大、更易于移植也更方便使用的。我们认为它是Flash界面编程的未来,并且建议你在新的Flash项目当中都去使用它。

最后,如果你是习惯于Flash开发环境、VB、Dephi或者VC++,那么你肯定是很喜欢这些产品的所见即所得的可视化界面开发,这些工具允许你直接设计界面。但是现在AsWing还没有这样的界面设计工具(也许不久之后就会有),所以如果要完全掌握AsWing的图形用户界面编程,还是要用手工编写代码,虽然这样需要编写大量的代码。

« Previous Page

Powered by WordPress