要让SWF填充整个浏览器窗口的方法非常简单,只用在SWF的发布设置中稍微修改一下即可。
在Flash9预览版中打开FLA文件,选择“文件 ->发布设置”。确保HTML(.html)的复选框是选中的。然后点击HTML标签。在尺度下拉菜单重选择“百分比”,然后输入宽度和高度都为100。这样,SWF将在浏览器窗口中满屏填充。
下面的两个发布属性可以通过修改Object和embed标签的属性来修改,不过在发布设置面板中的HTML标签中,也可以设置:
1,从缩放弹出菜单中选择“不缩放”;
2,在影片对齐选项中,水平方向选择左,垂直方向上选择顶部。
一般来说,我更喜在影片中使用AS来设定这两个参数,这样在Flash编辑环境下的测试中,就可以让播放器使用这两个属性来达到最需要的效果。
2.3 将Flash影片设置为不要自动改变内容的大小
要使用AS代码来设置上面说的到两个属性,可以通过设置Stage对象的两个属性来实现:
-
Stage .scaleMode = “noScale” ;
-
Stage .align = “TL” ;
scaleMode属性表示不自动拉伸flash影片,而align属性设置为TL表示影片以左上角为对齐点(top and left)。
2.4 如何让应用程序知道什么时候需要调整大小
使用AS代码来禁止SWF文件自动调整大小的目的是要所有的大小按照我们自己的需要来调整。
本文下面的部分将具体的讲述怎么来创建这个图片库,并将分成四个版本来制作。每个版本将比其前一个版本更复杂和完善。
版本1,创建一个基本的框架来监听窗口的调整大小事件;
版本2,创建继承MovieClip类的用户界面,处理调整大小时间并将其放在一个图形界面容器中;
版本3,通过实现自定义的IResizable接口来实现多态的调整大小;
版本4,图片库的其他一些特性和实现方式。
三、打基础
在这一部分,我们将通过两个方式来编写这个应用程序。第一种方法是通过Flash9预览版开发,可以做到尽量的简单。随后,将通
过AS3编程,在Flash9预览版和Flex Builder2里面实现更复杂的功能。我将用Flash来制作资源库,用Flex
builder来编写代码和编译SWF文件。
版本1
打开Flash9预览版,在舞台上创建三个MC,分别用来包含三个部分:顶部,主体和底部。将三个MC放在不同的层里面,顶部在最上,底部第二层, 主体在最下。将主体部分放在最下面的原因是,如果加载的图片大小超过了主体部分能显示的范围,将会被顶部和底部遮住。分别将MC的实例名称命名为 “header_mc”“body_mc”“footer_mc”。
在时间轴上,加入下面的代码:
-
import flash.display .StageScaleMode ;
-
import flash.display .StageAlign ;
-
import flash.events .Event ;
-
-
stage .scaleMode = StageScaleMode.NO_SCALE ;
-
stage .align = StageAlign.TOP_LEFT ;
-
stage .addEventListener ( Event.RESIZE , resizeHandler) ;
-
-
// 初始化调整大小事件
-
resizeHandler ( null ) ;
-
-
function resizeHandler ( event:Event) :void
-
-
{
-
var sw:Number = stage .stageWidth ;
-
var sh:Number = stage .stageHeight ;
-
header_mc.width = body_mc.width = footer_mc.width = sw;
-
body_mc.height = sh-header_mc.height -footer_mc.height ;
-
footer_mc.y = sh-footer_mc.height ;
-
}
上面的代码实现了下面几个内容:首先,通过代码将SWF设置成不可以自动随浏览器窗口改变大小。其次,将作坐标点的原点设置为左上角。然后,创建了一个监听器,当舞台的大小发生改变的时候触发事件。在用户改变窗口大小的时候,Resize事件将会被触发多次。
版本2
现在,我们已经有了一个最简单的版本。下面我们将使用Flex Builder2来将其中引入更多的和更复杂的功能。除了是用flex builder2的actionscript工程构造以外,版本2和版本1没有其他的区别。
在Flex Builder中,选择File -> New -> ActionScript Project。在对话框中,输入工程名称LiquidGUI_v2并选择使用默认的路径。Flex Builder将自动的创建HTML模板用来测试,因此你不需要担心和考虑HTML设置的问题。
然后,将版本1中的FLA文件重命名蔚library.fla,并将其放置于LiquidGUI_v2工程路径下的assets文件夹内。在 Flash中打开此FLA文件,并将舞台上所有的原件和你创建出来的层删除掉。在库中,将3个部分的MC的连接类名称分别改为 HeaderBG,BodyBG和FooterBG。在Flash9预览版中,将不再使用连接标识符(linkage identifier),而是使用了连接类(linkage class)。
现在,这个FLA文件的库中应该有3个MC,而舞台上没有任何东西。使用Flash9预览版的ActionScript3.0将此FLA文件发布为SWF文件,并将此SWF文件保存中assets文件夹内。
图5,Flash9的发布设置中AS3编译设置
应用程序的主类文件已经被创建名为LiquidGUI_v2.as。此类将继承Sprite类。在Flex Builder中打开此文件并用下面的代码代替:
-
package
-
{
-
import flash.display .Sprite ;
-
import flash.display .StageAlign ;
-
import flash.display .StageScaleMode ;
-
import flash.events .Event ;
-
//
-
public class LiquidGUI_v2 extends Sprite
-
{
-
public static var ow:Number = 550 ; // 初始舞台高度
-
public static var oh:Number = 400 ; // 初始舞台宽度
-
public static var hh:Number = 54 ; // 顶部高度
-
public static var fh:Number = 75 ; // 底部高度
-
public static var hfh:Number = 129 ; // 顶部和底部的高度
-
// 顶部代码
-
[ Embed( source=“assets/library.swf” , symbol=“HeaderBG” ) ]
-
private var HeaderBG:Class ;
-
private var _header:Sprite;
-
// 主体部分代码
-
[ Embed( source=“assets/library.swf” , symbol=“BodyBG” ) ]
-
private var BodyBG:Class ;
-
private var _body:Sprite;
-
// 底部代码
-
[ Embed( source=“assets/library.swf” , symbol=“FooterBG” ) ]
-
private var FooterBG:Class ;
-
private var _footer:Sprite;
-
/**
-
* 构造器
-
*/
-
public function LiquidGUI_v2 ( )
-
{
-
// 让播放器不要自动拉伸
-
stage .scaleMode = StageScaleMode.NO_SCALE ;
-
// 让播放器将左上角作为舞台的坐标原点
-
stage .align = StageAlign.TOP_LEFT ;
-
// 设置改变大小事件的监听器
-
stage .addEventListener ( Event.RESIZE , onResize ) ;
-
// 创建主体部分并将其添加到显示列表中
-
_body = new BodyBG ( ) ;
-
addChild ( _body) ;
-
// 创建底部并将其添加到显示列表中
-
_footer = new FooterBG ( ) ;
-
addChild ( _footer) ;
-
// 创建顶部并将其添加到显示列表中
-
_header = new HeaderBG ( ) ;
-
addChild ( _header) ;
-
// 设置位置
-
_body.y = _header.height ;
-
// 初始化位置设置
-
onResize ( null ) ;
-
}
-
/**
-
* onResize
-
* 大小改变的监听器的事件处理器。
-
* @param event
-
*/
-
public function onResize ( event:Event) :void
-
{
-
// 获取新的舞台大小
-
var sw:Number = stage .stageWidth ;
-
var sh:Number = stage .stageHeight ;
-
// 将各部分的大小调整到新的值
-
_header.width = _body.width = _footer.width = sw;
-
_body.height = sh-hfh;
-
_footer.y = sh-fh;
-
}
-
}
-
}
大部分的代码和版本1中的代码是差不多的。LiguidGUI_v2.as类既是主类,也是应用程序的入口。
在这个类中,我定义了一些全局变量,这些变量在应用程序的整个生存周期中都一直有效并不会被改变。因此我将其定义成静态变量以便调用。
接下来的代码是将一个外部的SWF文件作为扩展的库文件直接导入到当前的应用程序中来:
-
[ Embed( source=“assets/library.swf” , symbol=“FooterBG” ) ]
上 面的代码申明了在当前的应用程序中使用什么符号来引用需要嵌入的SWF文件。在申明了嵌入符号后,需要将此符号名称定义成一个类,如下:
-
private var FooterBG:Class ;
在此应用程序中,一旦FooterBG被定义成了一个类,你可以使用new关键字来实例化这个类。在我的例子中不打算使用时间轴,因此我将这里的对象类型定义为Sprite,如下:
-
private var _footer:Sprite;
_footer = new FooterBG ();
在创建了FooterBG类的实例后,必须将其加入到显示队列中才能显示出来。因此这里需要用到Sprite的addChild()方法:
-
addChild ( _footer) ;
最终,实现一个onResize方法来作为事件对象的处理器。
四、快完成了
前两个版本都是基本内容的实现。现在需要创建调整大小事件的处理器。
版本3
在版本3中,我将要创建一个名为LiquidGUI_v3的新工程,不过你也可以直接在版本2的项目上继续做。在本版3中,我将减少主类中的功能, 因为主类实际上并不需要知道如何去调整每个部分的大小。主类的功能是计算和设置每个部分的位置并将告诉每个部分其应该的大小,然后由每个部分自己来调整显 示大小。因此,主类中在调整大小时处理的,仅仅是_footer的y坐标。而其他的部分,只要设置好了就不用再修改。
首先,创建一些文件夹来放置需要编写的类文件。这些文件夹的名字同类的包定义路径要吻合。关于AS3类的包定义,请查看其他相关手册。
我这里使用的包名称为com.jor。在com目录内创建一个名称为jor的目录,是“James O’Reilly”的简称。然后需要创建了一些不同的目录来放置不同的类。在这里,我创建了两个不同的目录:“controls”和 “examples”。在examples目录中,我创建了一个目录名称为“liquidgui”,然后在其中创建了一个目录名称为“ui”。目录结构如 下:
LiquidGUI_v3/
LiquidGUI_v3/assets/
LiquidGUI_v3/bin/
LiquidGUI_v3/com/jor/examples/liquidgui/ui
LiquidGUI_v3/bin/html-template/
然后,为三个不同的部分创建三个继承Sprite的类:
LiquidGUI_v3/com/jor/examples/liquidgui/ui/HeaderUI.as
LiquidGUI_v3/com/jor/examples/liquidgui/ui/BodyUI.as
LiquidGUI_v3/com/jor/examples/liquidgui/ui/FooterUI.as
每一个部分用一个独立的类来实现,而每个类需要在内部实现自己的调整大小的方法,因此需要在每个类中定义一个名称为setSize()方来,用来调 用以调整大小。现在,我创建一个接口,让每一个需要调整大小的类都来实现这个接口。我将这个接口命名为IResizable.as,然后写入下面的代码:
创建接口比创建类要容易得多,因为接口中是没有代码的。关于AS3中接口的更多介绍,请查看相关手册。
每个部分的类中都需要实现这个接口。打开HeaderUI.as并加入下面的代码:
-
package com.jor .examples .liquidgui .ui
-
{
-
import com.jor .examples .liquidgui .IResizable ;
-
import flash.display .Sprite ;
-
public class HeaderUI extends Sprite implements IResizable
-
{
-
public static var _instance:HeaderUI;
-
private var _parent :Sprite;
-
// 背景资源
-
[ Embed( source=“/assets/library.swf” , symbol=“HeaderBG” ) ]
-
private var HeaderBG:Class ;
-
public var bg:Sprite;
-
// 顶部资源
-
[ Embed( source=“/assets/library.swf” , symbol=“HeaderTitle” ) ]
-
private var HeaderTitle:Class ;
-
public var title:Sprite;
-
public function HeaderUI ( p:Sprite)
-
{
-
_parent = p;
-
// 创建并添加背景到显示队列
-
bg = new HeaderBG ( ) ;
-
addChild ( bg) ;
-
// 创建并添加顶部到显示队列
-
title = new HeaderTitle ( ) ;
-
addChild ( title) ;
-
title.x = 23 ;
-
}
-
public static function getInstance ( p:Sprite) :HeaderUI
-
{
-
if ( _instance == null )
-
_instance = new HeaderUI ( p) ;
-
return _instance;
-
}
-
public function setSize ( w:Number , h:Number ) :void
-
{
-
bg.width = w;
-
}
-
}
-
}
这是HeaderUI类的代码。在开始的几行中,你可以看到此类继承了Sprite类并实现了IResizable接口。后面的代码则显示界面和实现了setSize()方法。
另外两个类,BodyUI和FooterUI,类似的加入下面的代码:
-
package com.jor .examples .liquidgui .ui
-
{
-
import com.jor .examples .liquidgui .IResizable ;
-
import flash.display .Sprite ;
-
public class BodyUI extends Sprite implements IResizable
-
{
-
public static var _instance:BodyUI;
-
// 背景资源
-
[ Embed( source=“/assets/library.swf” , symbol=“BodyBG” ) ]
-
private var BodyBG:Class ;
-
public var bg:Sprite;
-
// 私有内容
-
private var _parent :Sprite;
-
public function BodyUI ( p:Sprite)
-
{
-
_parent = p;
-
bg = new BodyBG ( ) ;
-
addChild ( bg) ;
-
}
-
public static function getInstance ( p:Sprite) :BodyUI
-
{
-
if ( _instance == null )
-
_instance = new BodyUI ( p) ;
-
return _instance;
-
}
-
public function setSize( w:Number , h:Number ) :void
-
{
-
bg.width = w;
-
bg.height = h;
-
}
-
}
-
}
-
-
package com.jor .examples .liquidgui .ui
-
{
-
import com.jor .examples .liquidgui .IResizable ;
-
import flash.display .Sprite ;
-
public class FooterUI extends Sprite implements IResizable
-
{
-
public static var _instance:FooterUI;
-
// UI对象的私有引用
-
[ Embed( source=“/assets/library.swf” , symbol=“FooterBG” ) ]
-
private var FooterBG:Class ;
-
public var bg:Sprite;
-
private var _parent :Sprite;
-
public function FooterUI ( p:Sprite)
-
{
-
_parent = p;
-
__configUI ( ) ;
-
}
-
private function __configUI ( ) :void
-
{
-
bg = new FooterBG ( ) ;
-
addChild ( bg) ;
-
}
-
public static function getInstance ( p:Sprite) :FooterUI
-
{
-
if ( _instance == null )
-
_instance = new FooterUI ( p) ;
-
return _instance;
-
}
-
public function setSize ( w:Number , h:Number ) :void
-
{
-
bg.width = w;
-
}
-
}
-
}
最后,你需要修改一下主类来使用上面写的这几个类。代码如下:
-
package
-
{
-
import flash.display .Sprite ;
-
import flash.display .StageAlign ;
-
import flash.display .StageScaleMode ;
-
import flash.events .Event ;
-
import com.jor .examples .liquidgui .ui .BodyUI ;
-
import com.jor .examples .liquidgui .ui .FooterUI ;
-
import com.jor .examples .liquidgui .ui .HeaderUI ;
-
public class LiquidGUI_v3 extends Sprite
-
{
-
public static var hh:Number = 54 ; // 顶部的高度
-
public static var fh:Number = 75 ; // 底部的高度
-
public static var hfh:Number = 129 ; // 顶部和底部高度之和
-
private var _header:HeaderUI;
-
private var _body:BodyUI;
-
private var _footer:FooterUI;
-
public function LiquidGUI_v3 ( )
-
{
-
// 不拉伸显示
-
stage .
相关推荐
### 使用Flex Builder 3与Papervision3D创建3D应用 随着互联网技术的不断发展,用户对于在线体验的需求也在不断提高。特别是在娱乐、游戏及视觉展示领域,3D技术的应用越来越广泛。Adobe Flash平台因其出色的跨平台...
flexbuilder3 序列号 请下载FB3_WWEJ_Plugin.exe
- 重新启动Eclipse,即可使用Flex3功能。 #### 四、注意事项 - 在安装Flex Builder 3插件时,确保关闭所有浏览器和其他与Flash相关的应用程序,避免冲突导致安装失败。 - 如果在安装过程中出现错误提示,检查日志...
"汉化 Flex Builder 3 ...Flex Builder 3 帮助文档汉化是非常必要的,它可以帮助开发者更方便地使用 Flex Builder 3,提高开发效率。本文详细介绍了汉化 Flex Builder 3 帮助文档的步骤,希望能够帮助更多的开发者。
Flex Builder 3是一款由Adobe公司推出的专门用于开发Flex应用程序的集成开发环境(IDE),它基于Eclipse平台,为创建富互联网应用(RIA)提供了强大的工具支持。本篇将重点介绍Flex Builder 3插件的第六部分,即在...
标题 "FlexBuilder运行项目报Flex Builder cannot locate the required version of Flash Player" 描述了一个常见的问题,即在使用FlexBuilder开发Flex应用程序时,由于找不到合适的Flash Player版本,导致项目无法...
尽管Flex Builder 3.0相较于4.0版本而言,技术上可能略显陈旧,但对于部分用户而言,它依然具有使用价值,尤其是在某些特定项目中,3.0版本可能更加稳定或兼容性更好。因此,合法获取并使用其注册码同样是必要的。 ...
在探讨“Flex Builder 3序列号”的相关内容时,我们首先需要了解Flex Builder 3这款软件的基本情况及其在软件开发领域中的应用。 ### Flex Builder 3简介 Flex Builder 3是Adobe公司推出的一款专为开发Flex应用...
第六章是关于如何使用MXML和CSS来设计和构建Flex用户界面。我们将介绍各种UI组件,如按钮、文本框、列表等,并讨论如何使用这些组件来创建直观且响应式的界面。 #### 七、添加视图状态(Chapter 7) 在第七章中,...
通过这个中文教程,开发者将能够逐步掌握FlexBuilder 3的使用,熟练地创建和部署富互联网应用程序,同时也能深入理解Flex的开发理念和实践技巧。无论是初学者还是有一定基础的开发者,都能从中获益。
FlexBuilder 3是一款由Adobe公司推出的集成开发环境(IDE),专为构建富互联网应用程序(RIA)而设计,尤其是基于Adobe Flash Player和Adobe AIR的应用。这个IDE是基于Eclipse平台,提供了一整套工具来帮助开发者...
对于需要构建复杂Web应用的开发者来说,结合使用FlexBuilder 3和LiveCycle Data Services能够极大地提高开发效率和应用性能。 ### 结语 使用正确的注册码对于保障软件的正常使用至关重要。在获取和使用注册码的...
现在你可以开始创建和管理Flex项目,利用其丰富的代码编辑器、调试工具以及集成的Flash Player模拟器进行开发工作。 在压缩包中的"Flex安装过程"文件,可能包含了更详细的图文步骤和注意事项,对于初学者来说,这是...
综上所述,这个主题涵盖了使用FlexBuilder3开发AIR 1.0应用程序的基本流程,包括从项目创建、代码编写、配置、测试到打包发布的关键步骤,同时也涉及到压缩包内文件的作用和结构。通过这样的实践,开发者可以创建...
Flex Builder3,作为Adobe公司推出的专为Flex框架设计的集成开发环境(IDE),在Web应用程序开发领域占据了一席之地,尤其在Flash平台上的RIA(Rich Internet Applications)开发中发挥着举足轻重的作用。 ### Flex ...
《Flex Builder 4 Help》这个英文文档是Flex Builder 4用户的重要参考资料,它详细阐述了如何使用该IDE进行Flex开发。下面,我们将深入探讨其中的关键知识点: 1. **Flex SDK和Flash Player**:Flex Builder 4基于...
Flex Builder 3 支持多种语言,如 ActionScript 3.0,并且能够创建复杂的 Rich Internet Applications (RIA)。 #### 二、注册码的重要性 对于 Adobe Flex Builder 3 这样的专业软件来说,注册码是授权用户合法使用...
[http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk](http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk) 下载完成后,解压文件到一个易于访问的位置,例如`D:\Program Files\Adobe\...
在本实例中,我们将探讨如何使用FlexBuilder3来创建一个简单的"Hello, World!"程序,这通常是学习新开发工具的第一步。 首先,让我们了解FlexBuilder3的基础。它是一个集成开发环境(Integrated Development ...
7. **图形和动画**:介绍如何在Flex应用中创建和控制动画,以及使用绘图API创建自定义图形。 8. **状态管理**:探讨如何使用状态管理来改变应用在不同条件下的外观和行为。 9. **调试和测试**:教授如何使用Flex ...