weilaixu 16:27:16
主swf中如何调用子swf库中的图片、
阿辉(512858288) 16:27:36
as3?
weilaixu 16:27:40
恩
..zZZ/ty 16:27:42
给你例子.
weilaixu 16:27:47
谢谢
阿辉(512858288) 16:27:55
给子库的用类绑定
..zZZ/ty 16:28:50
package
{
import flash.display.*;
import flash.net.URLRequest;
import flash.events.Event;
public class LoaderExampleOne extends Sprite
{
private var _loader:Loader;
public function LoaderExampleOne( ) {
// 创建Loader并显示
_loader = new Loader( );
addChild( _loader );
// 添加于载入swf文件的交互事件
_loader.contentLoaderInfo.addEventListener( Event.INIT, handleInit );
// 载入外部文件
_loader.load( new URLRequest( "ExternalMovie.swf" ) );
}
// 当文件载入完时触发该函数
private function handleInit( event:Event ):void {
// 这里设置为* 就是指事先不知道载入什么类型
var movie:* = _loader.content;
// 获得颜色值,显示为0
trace( movie.getColor( ) );
// 设置颜色
movie.setColor( 0xFF0000 );
}
}
}
阿辉(512858288) 16:30:53
其实你如果加载as3的swf,用getDefinitionByName()获取类名,直接new
主swf中如何调用子swf库中的图片、
阿辉(512858288) 16:27:36
as3?
weilaixu
恩
..zZZ/ty
给你例子.
weilaixu
谢谢
阿辉(512858288) 16:27:55
给子库的用类绑定
..zZZ/ty
package
{
import flash.display.*;
import flash.net.URLRequest;
import flash.events.Event;
public class LoaderExampleOne extends Sprite
{
private var _loader:Loader;
public function LoaderExampleOne( ) {
// 创建Loader并显示
_loader = new Loader( );
addChild( _loader );
// 添加于载入swf文件的交互事件
_loader.contentLoaderInfo.addEventListener( Event.INIT, handleInit );
// 载入外部文件
_loader.load( new URLRequest( "ExternalMovie.swf" ) );
}
// 当文件载入完时触发该函数
private function handleInit( event:Event ):void {
// 这里设置为* 就是指事先不知道载入什么类型
var movie:* = _loader.content;
// 获得颜色值,显示为0
trace( movie.getColor( ) );
// 设置颜色
movie.setColor( 0xFF0000 );
}
}
}
阿辉(512858288) 16:30:53
其实你如果加载as3的swf,用getDefinitionByName()获取类名,直接new
[转帖]外部swf库资源载入及使用
具体出自哪里已经不记得了,如果谁知道请告知,我好加上。
外部swf库资源载入及使用
如果不知道怎么载入swf文件,请先看 Coding ActionScript 3.0 [3] 外部swf文件载入。
很多的时候我们并不希望我们的项目就是一个超级大的swf文件,尤其是在as3中,你可以做到代码与界面的分离,所以,将资源放在一个一个的swf文件中成为必要。那么如果载入和使用这些外部的swf资源呢?不要着急,先喝口水。。。。
在as2中你可以在加载完swf库文件后使用attachMovie将元件添加进来,看上去很方便,其实,as3提供了更方便的方式来,下面请听我慢满道来......
首先我们要来了解一下as3的一个新特性,那就是attachMovie这个方法没有了(废话),取代它的是addChild。任何的MC我们都需要new 出来,然后addChild另一个MC中,所以,你加载进来的swf文件事实上也是一个mc(实际是DisplayObject,DisplayObject是什么,你得看帮助了。),对于一个DisplayObject,你可以做什么?attachMovie?不,这个方法没有了!那么。。。new ?,对了!首先,你可以在库文件中(我这里把它叫:lib.fla),建立一个元件,class名称为Lib,至于里面的动画什么的,你自己做。然后在主场景第一帧写这样的代码:
function getMC(id:String):MovieClip{
try{
var ClassReference:Class = getDefinitionByName(id) as Class;
}catch(e:Error){
trace(e);
return new MovieClip();
}
var instance:Object = new ClassReference();
return instance;
}
完了一可以测试一下:
var mc:MovieClip = getMC("Lib");
this.addChild(mc);
如果你可以看到你的元件被加载,那么恭喜你,你成功跨出第一步了。这里需要提到的是getDefinitionByName方法,他是as3的一个新方法,你可以通过ClassName来获得Class对象。
OK,你可以建立你的主程序了,我这里建立了一个main.fla文件,在第一帧加入这样的代码:
var loaderoader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHanlder);
loader.load(new URLRequest("lib.swf"));
//资源加载完成
function loadCompleteHanlder(e:Event):void{
var lib:MovieClip = e.target.content.getMC("Lib");
this.addChild(lib);
lib.x = lib.y = 100;
}
然后,发布!
具体出自哪里已经不记得了,如果谁知道请告知,我好加上。
外部swf库资源载入及使用
如果不知道怎么载入swf文件,请先看 Coding ActionScript 3.0 [3] 外部swf文件载入。
很多的时候我们并不希望我们的项目就是一个超级大的swf文件,尤其是在as3中,你可以做到代码与界面的分离,所以,将资源放在一个一个的swf文件中成为必要。那么如果载入和使用这些外部的swf资源呢?不要着急,先喝口水。。。。
在as2中你可以在加载完swf库文件后使用attachMovie将元件添加进来,看上去很方便,其实,as3提供了更方便的方式来,下面请听我慢满道来......
首先我们要来了解一下as3的一个新特性,那就是attachMovie这个方法没有了(废话),取代它的是addChild。任何的MC我们都需要new 出来,然后addChild另一个MC中,所以,你加载进来的swf文件事实上也是一个mc(实际是DisplayObject,DisplayObject是什么,你得看帮助了。),对于一个DisplayObject,你可以做什么?attachMovie?不,这个方法没有了!那么。。。new ?,对了!首先,你可以在库文件中(我这里把它叫:lib.fla),建立一个元件,class名称为Lib,至于里面的动画什么的,你自己做。然后在主场景第一帧写这样的代码:
function getMC(id:String):MovieClip{
try{
var ClassReference:Class = getDefinitionByName(id) as Class;
}catch(e:Error){
trace(e);
return new MovieClip();
}
var instance:Object = new ClassReference();
return instance;
}
完了一可以测试一下:
var mc:MovieClip = getMC("Lib");
this.addChild(mc);
如果你可以看到你的元件被加载,那么恭喜你,你成功跨出第一步了。这里需要提到的是getDefinitionByName方法,他是as3的一个新方法,你可以通过ClassName来获得Class对象。
OK,你可以建立你的主程序了,我这里建立了一个main.fla文件,在第一帧加入这样的代码:
var loaderoader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHanlder);
loader.load(new URLRequest("lib.swf"));
//资源加载完成
function loadCompleteHanlder(e:Event):void{
var lib:MovieClip = e.target.content.getMC("Lib");
this.addChild(lib);
lib.x = lib.y = 100;
}
然后,发布!
案例:助飞网 zhufeiwang.com
文/weilaixu 转载请注明出处
助飞网 http://www.zhufeiwang.com ,4月底开始,跨越五一劳动节后,出了不少版,加上等程序的时间,约3周结束!
对于我来说,这并不是能打到90分的优秀作品.打分其实结合了个人满意度,客户满意度,前台后台合作满意度以及程序应用/交互等等各方面.但总体来说,还是比较成功的一个站,写这篇文章的目的除了详细介绍一下本站的制作流程之外,还有个小目的就是看能不能让百度更快的收录助飞网.
文/weilaixu 转载请注明出处
助飞网 http://www.zhufeiwang.com ,4月底开始,跨越五一劳动节后,出了不少版,加上等程序的时间,约3周结束!
对于我来说,这并不是能打到90分的优秀作品.打分其实结合了个人满意度,客户满意度,前台后台合作满意度以及程序应用/交互等等各方面.但总体来说,还是比较成功的一个站,写这篇文章的目的除了详细介绍一下本站的制作流程之外,还有个小目的就是看能不能让百度更快的收录助飞网.
一篇关于搜索引擎分辨浏览者性别的文章
作为设计主管,Peter Stern 已经领导 microsoft.com 重新设计了主页并且开发了五个不同的交互工具,这些工具被用于下载中心、产品目录、配置文件中心、 搜索 和注册等联机功能。 他为几个内部工具设计了用户界面,并且正致力于创建将于今年晚些时候发布的下一代主页。
鼠标事件(MouseEvent)和鼠标位置(AS3鼠标坐标总结)是RIA中最重要的人机交互途径。最近在做一个动态产品展示的系统ProdutShow的时候才发现自己对鼠标事件的了解有多么肤浅。现在ProductShow已经做完了,这里把在使用鼠标事件时要注意的问题总结一下:
1 鼠标事件分为MOUSE_OVER, MOUSE_MOVE, MOUSE_DOWN, MOUSE_UP, MOUSE_OUT, MOUSE_WHEEL和MOUSE_LEAVE。其中前六个事件都来自flash.events.MouseEvent类,最后一个MOUSE_LEAVE却是来自flash.events.Event,在导入类包的时候一定要注意这个问题,因为我在这点上就花了很长时间调试,才得发现问题所在。
MOUSE_OVER - 鼠标移动到目标对象之上时触发, 可以用于模拟按钮的mouse over效果;
MOUSE_MOVE - 鼠标在目标对象之上移动时触发,主要用于判断。比如判断在拖拽实例时,实例是否在允许的范围之内,如果超出,立刻停止拖拽或者重新设定实例的坐标;
MOUSE_DOWN - 鼠标在目标对象之上按下时触发。注意,只有按下鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之外按下鼠标左键,再移动到目标对象之上时,也不会触发;
MOUSE_UP - 鼠标在目标对象之上松开时触发。注意,只有松开鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之上按下鼠标左键,再移动到目标对象之外松开时,不会触发。但在目标对象之外按下鼠标左键,再移动到目标对象之上松开时,就会触发。
MOUSE_OUT- 鼠标移动到目标对象之外时触发。
MOUSE_WHEEL - 鼠标在目标对象之上转动滚轮时触发。
MOUSE_LEAVE - 当光标离开舞台时触发(stage.addEventListener(Event.MOUSE_LEAVE,leaveHandler);)。在使用自定鼠标后,在鼠标离开舞台时,触发MOUSE_LEAVE事件,然后可以把自定义的鼠标隐藏掉,避免还停留在舞台上。
2 mouseChildren。目标对象中含有子实例时,感应鼠标行为的是子时列,而非目标对象。如果使用 cursor.mouseEnabled=false; 就可以由目标对象来更应鼠标行为。
3 mouseEnabled。当实例重叠时,出于显示列表上方的实例总比下方实例更有优先权感应鼠标行为。当想让下方实例感应鼠标行为时使用 cursor.mouseEnabled=false; 即可。这常用于自定义鼠标后,去除自定义鼠标对鼠标行为的干涉,因为自定义鼠标往往一直处于鼠标下方,其他实例无法再感应到鼠标的变化。
另外,也许DOUBLE_CLICK也应该算做鼠标事件,但要使用它,必须先让doubleClickEnabled=true:
var bg:Sprite=new Sprite();
bg.doubleClickEnabled=true;
bg.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
…
////////////////////////////
鼠标是Flash里追主要的互动因素,经常需要侦测鼠标事件(AS3中鼠标事件小结)和得到鼠标的坐标。鼠标坐标的获取可以分为在文档类和在子类中,两种不同的情况。
1)如果是在时间线轴上,或者文档类上使用:
stage.mouseX 和 stage.mouseY
2)在子类(如_sprite:Sprite)上使用:
_sprite.mouseX 和 _sprite.mouseY
这里得到的是鼠标相对于_sprite的坐标。如果需要的是相对于舞台的坐标,则应该使用localToGlobal,如:
var mousePoint:Point=new Point(_sprite.mouseX, _sprite.mouseY);
mousePoint=_sprite.localToGlobal(mousePoint);
trace("Stage coordinates:"+mousePoint);
注:要使用以上代码别忘了 import flash.geom.Point;
1 鼠标事件分为MOUSE_OVER, MOUSE_MOVE, MOUSE_DOWN, MOUSE_UP, MOUSE_OUT, MOUSE_WHEEL和MOUSE_LEAVE。其中前六个事件都来自flash.events.MouseEvent类,最后一个MOUSE_LEAVE却是来自flash.events.Event,在导入类包的时候一定要注意这个问题,因为我在这点上就花了很长时间调试,才得发现问题所在。
MOUSE_OVER - 鼠标移动到目标对象之上时触发, 可以用于模拟按钮的mouse over效果;
MOUSE_MOVE - 鼠标在目标对象之上移动时触发,主要用于判断。比如判断在拖拽实例时,实例是否在允许的范围之内,如果超出,立刻停止拖拽或者重新设定实例的坐标;
MOUSE_DOWN - 鼠标在目标对象之上按下时触发。注意,只有按下鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之外按下鼠标左键,再移动到目标对象之上时,也不会触发;
MOUSE_UP - 鼠标在目标对象之上松开时触发。注意,只有松开鼠标左键时才会触发,右键和滚轮都不会触发。在目标对象之上按下鼠标左键,再移动到目标对象之外松开时,不会触发。但在目标对象之外按下鼠标左键,再移动到目标对象之上松开时,就会触发。
MOUSE_OUT- 鼠标移动到目标对象之外时触发。
MOUSE_WHEEL - 鼠标在目标对象之上转动滚轮时触发。
MOUSE_LEAVE - 当光标离开舞台时触发(stage.addEventListener(Event.MOUSE_LEAVE,leaveHandler);)。在使用自定鼠标后,在鼠标离开舞台时,触发MOUSE_LEAVE事件,然后可以把自定义的鼠标隐藏掉,避免还停留在舞台上。
2 mouseChildren。目标对象中含有子实例时,感应鼠标行为的是子时列,而非目标对象。如果使用 cursor.mouseEnabled=false; 就可以由目标对象来更应鼠标行为。
3 mouseEnabled。当实例重叠时,出于显示列表上方的实例总比下方实例更有优先权感应鼠标行为。当想让下方实例感应鼠标行为时使用 cursor.mouseEnabled=false; 即可。这常用于自定义鼠标后,去除自定义鼠标对鼠标行为的干涉,因为自定义鼠标往往一直处于鼠标下方,其他实例无法再感应到鼠标的变化。
另外,也许DOUBLE_CLICK也应该算做鼠标事件,但要使用它,必须先让doubleClickEnabled=true:
var bg:Sprite=new Sprite();
bg.doubleClickEnabled=true;
bg.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
…
////////////////////////////
鼠标是Flash里追主要的互动因素,经常需要侦测鼠标事件(AS3中鼠标事件小结)和得到鼠标的坐标。鼠标坐标的获取可以分为在文档类和在子类中,两种不同的情况。
1)如果是在时间线轴上,或者文档类上使用:
stage.mouseX 和 stage.mouseY
2)在子类(如_sprite:Sprite)上使用:
_sprite.mouseX 和 _sprite.mouseY
这里得到的是鼠标相对于_sprite的坐标。如果需要的是相对于舞台的坐标,则应该使用localToGlobal,如:
var mousePoint:Point=new Point(_sprite.mouseX, _sprite.mouseY);
mousePoint=_sprite.localToGlobal(mousePoint);
trace("Stage coordinates:"+mousePoint);
注:要使用以上代码别忘了 import flash.geom.Point;













