资源描述
if(stage){
stage.scaleMode = StageScaleMode.NO_SCALE;//设置舞台为无缩放
stage.align = StageAlign.TOP_LEFT;//设置舞台向左上对齐
//stage.addEventListener(Event.RESIZE, stage_resize);//舞台变化事件
}
虽然有很多动画从业者依然用as2.0做项目,但如今主流flash编程已经是as3.0,本教程教大家如何利用as3.0语法实现舞台的自适应效果,这种效果在交互作品,尤其是全屏的交互作品中非常常用。
工具/原料
· Flash cs3
步骤/方法
1. 打开Flash,新建一个ActionScript3.0文档。
2. 我们新建两个元件,一个放在右上角,一个放在右下角,如果你看了前一篇as2的教程,那么这个新建过程很简单。
3. 我们这次就是要实现flash任意拖动大小时,1和2的位置保持不动,一直在左下角和右上角。为了程序控制,我们给1和2分别命名为mc0和mc1.
4. 在时间轴新建一层,命名为AS,写入如下控制代码:
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE,resizeStage);
function resizeStage(e:Event):void
{
trace("dd");
mc0.x = 20;
mc0.y = stage.stageHeight - 20 - mc0.height;
mc1.x = stage.stageWidth - 20 - mc1.width;
mc1.y = 20;
}
前两行的舞台的对其方式是必须的,否则自适应失败,给舞台添加Event.RESIZE事件侦听,当舞台大小变化时,自然会相应resizeStage方法来调整元件位置。
5. 按下Ctrl+Enter来测试影片,无论缩放多大多小,两个元件始终保持相对位置不动。
拖动放大舞台,依然保持相对位置在角落里:
更多精彩电脑信息,请登录:中国高速网-IT频道。
中国高速网-IT频道:
中国高速网-软件与下载频道:
中国高速网-服务器频道:
中国高速网-网络安全频道:
在flash制作交互作品中,尤其是flash网站的应用中,经常需要flash作品根据浏览器的窗口自动改变大小,但是页面的布局不能变化,这个时候就需要每次浏览器改变大小时舞台进行自适应调整,保证布局,本篇教程就是教大家如何用AS2.0语法实现这个操作。
工具/原料
· Flash CS3(或flash 8)
步骤/方法
1. 打开Flash,新建一个空白的ActionScript2.0文档,记住是2.0:
2. 此时我们得到一个空白文档,我们在舞台上制作两个影片剪辑元件,为了区分明显,分别在绘制时标上“1,2”以示区分:
3. 我们要做的效果就是在拖动flash大小时,保证1和2永远在两个角落里,相对位置不变。我们给1命名为mc0,给2命名为mc1:
4. 在主时间轴上新建一层,命名为AS,用于写代码用:
5. 在as图层第一帧按下F9,写入如下代码:
Stage.addListener(this);
Stage.scaleMode = "noScale";
Stage.align = "TL";
setPos();
function setPos():Void
{
var sWidth:Number = Stage.width;
var sHeight:Number = Stage.height;
trace(sWidth + "," + sHeight);
mc0._x = 0;
mc0._y = 0;
mc1._x = sWidth - mc1._width -30;
mc1._y = sHeight - mc1._height -60;
}
function onResize():Void
{
setPos();
}大概解释一下:就是给舞台增加一个侦听,每次舞台发生变化会执行onResize()函数,我们便在这个函数里调整元件的位置,让它们永远保持在角落里。
6. 我们发布测试一下,不管flash拖动的多大多小,两个元件永远在角落里,目的达到(下一篇讲述用AS3来实现这个效果)
拉大后:
更多精彩电脑信息,请登录:中国高速网-IT频道。
中国高速网-IT频道:
中国高速网-软件与下载频道:
中国高速网-服务器频道:
中国高速网-网络安全频道:
要让flash自适应浏览器屏幕大小需要做到以下两点:
1、swf文件随着浏览器屏幕大小也相应改变大下;
方法:在网页里除了放你的swf文件外不要放其他的任何内容,并且swf文件的宽,高都设为100%;(可以看我的源文件里的fullscreen.htm文件);
2、当swf文件大小改变时,flash 内容也相应重新安排。
在这个例子里,我在主舞台上使用了一loader组件来载入一张图片。当你调整浏览器大小时,swf文件大下相应发生变化。我使用了Stage 对象的onReisize事件来改变loader组件的大下和位置。
源文件下载
在源文件里我没有写太多的代码,相信你能很容易看懂。
++++++++++++++++++++++++++++++++++++++
第二种方法:
++++++++++++++++++++++
首先是:
在网页中把flash的高、宽都设为100%。
在flash中加入
Stage.scaleMode = "noScale";//这个是一定要的
Stage.align = "TL";
然后,方法有两个:
1、通过System.capabilities.screenResolutionX和System.capabilities.screenResolutionY获得屏幕大小,然后调整flash里的相应显示,比较简单。
2、这个比较好,每次调整浏览器大小的时候都会触发,而且检测的是浏览器里的舞台大小,比较准确。
fullscreen = new Object();//创建类
fullscreen.onResize = function() {//swf大小改变时触发
box._x = Stage.width-300;//根据Stage.width和Stage.height获得的舞台的宽和高来调整显示
};
Stage.addListener(fullscreen);
展开阅读全文