闪客帝国:教程 闪客帝国教程 zh-cn 叶子 Allan 闪客帝国 闪客帝国 <![CDATA[killersound 技巧: 为 Flash Lite 优化数字音频]]>   同 Macromedia Flash 改变了我们体验 Web 的方式一样,Macromedia Flash Lite
对移动设备起到了同样的作用。音效是这种丰富式体验的一部分。事实上,音效是任何移动设备不可分割的一部分,它提供警告、铃声、音频提示和多种娱乐使用中的背景音乐。在本文中,我将为您介绍
killersound 技巧 - 一种在 Flash Lite 1.1 中使用音效的创新方法(该方法同样适用于在桌面上使用 Flash)。使用本技巧,您能够将数字音频的文件大小缩小最多
70%。它还提供了多种听觉体验,而不仅仅是简单的音频回放。本技巧对于需要较长背景音乐的产品(例如游戏)尤其有用。事实上,需要的音乐越长,就越能从本技巧中受益。



   请注意,本教程使用数字音频文件(WAV 或 MP3),而不是 MIDI 文件。由于数字音频的文件大小和对处理能力的较高要求,并非所有具有 Flash
功能的移动设备都支持数字音频。但是,到本文出版时,很可能大多数新的移动设备将通过使用更好的硬件(扬声器)、更多内存和更快的处理器支持数字音频。同时,我确信
Flash Lite 的下一版本将会使用这一逐渐完善的技术来交付更为丰富的移动体验。



教程和示例文件:

layering_audio.zip(ZIP, 3.6 MB)



必备知识:

  中等的 Flash 知识,尤其是在 Flash 中使用音频的知识,将有所帮助。


  到目前为止,MIDI 一直是移动设备上的标准声音格式。虽然这种格式很简单,但它在音质和能够产生的音效数量和类型上非常有限。通过
MIDI 产生的音效取决于作为移动设备芯片一部分的波形表。与数字音频不同,MIDI 文件中不包含任何声音,它包含的是一套指令,用以触发手机芯片内的音效。相反,数字音频包含了声音本身,这声音可以是广播、语音或者震动音。数字音频的音质取决于录音或存储时的采样率。我们大多数人都对
MP3 数字音频格式很熟悉。比特率或采样率越高,音质就越好。但是,较高的比特率也意味着文件更大。



   本文说明的技巧涉及数字音频文件的分层,可为数字音乐人所采用。在 Flash 中,您可以重用视觉元素,从而避免增大导出的 SWF 电影,对音频也可以这样做。通过导入单独的元素或乐曲的一部分(低音、鼓...

完整阅读本文...]]> 2005-07-21 <![CDATA[Actionscript animation 简明教程]]>
文章出处: http://www.bit-101.com

文章性质:翻译

译者网站很值得一看:http://www.webstudio.com.cn/

Actionscript animation 简明教程


本教程节选自bit-101.com的未正式出版的新书making things move的新书介绍。主要内容是关于速度,加速度,弹性,缓动,摩擦力,重力等内容,这里没有非常详尽的内容,如果你想知道更详尽的内容,可以预定购买作者的新书making
things move…相信一定是一本好书。引用keith peters的话就是你一定不要直接将代码粘过来用,只有理解了它的应用,才能运用自如。在本教程中本人对大部分内容进行了扩展讲解。希望对于初学或中级用户有所帮助,由于多年没有研究过数学物理,难免有误,希望多多指正。


1. 速度


物体的运动都是沿着一定的方向,以恒定或是加速度的方式的运动的。在FALSH中要使物体以一个恒定的速度运动,就需要我们在每一帧不断的累加恒定的速度。这里面我们使用一种帧的循环的方式,来使物体不断的累加恒定的速度,以达到目的地。对于帧的循环方式大致上有三种,一种是使用代码onEnterFrame,一种是使用setInterval,另一种就是使用二到三帧来达到循环,如果你对这三种方式不太熟,请查看帮助来学习。


在x轴方向的速度我们定义为vx,方向是向右,如果向左只要设为负值就可以。

例如:

代码:

            vx=5;

onEnterFrame=function(){

my_mc._x+=vx; //你也可以写成 my_mc._x=my_mc._x+vx;

}

演示:



2005-07-13 <![CDATA[Flash 实用编程百例解读]]> 前言:网络中的swf影片是可以实现边下载边播放的,由于受到当前网络传输的制约,对于大容量的影片,这种实时播放并不理想。为避免受众尴尬的等待,flash制作人员往往设计一个加载(loading)的画面,等影片的全部字节下载到本地后再播放,从而保证影片的播放质量.本文将介绍一种较为标准的loading制作方法。


步骤:

1.打开Flash MX 2004,选择矩形工具,在主场景中画出下一个只有边框有矩形,本例该矩形大小为350*16像素。

2.再在主场景中仍用矩形工具画出一个只有填充而无边框的矩形,并按F8键将其转换为影片剪辑(注:其注册点一定要选在该矩形的最左侧),其实例名为bar
。本例该矩形大小为345*11像素。

3.将上述两矩形在主场景中排列好,使边框矩形嵌套填充矩形。

4.在上述两矩形旁边用文字工具拖出一动态文本框,其变量名为bar_per。


至此,准备工作就绪,即建立了两矩形框和一动态文本框,下面准备编写代码。


5.在主场景中,新建一层,选中该层第1帧,按F9键打开动作脚本编辑窗口,输入以下代码:


this.onLoad=function(){ 

myBytesTotal=_root.getBytesTotal();

}

this.onLoad();

this.onEnterFrame=function(){

myBytesLoaded=_root.getBytesLoaded();

bar_xscale=myBytesLoaded/myBytesTotal*100;

percent=Math.round(bar_xscale);

this.bar._xscale=bar_xscale;

this.bar_per=percent+"%";


if(myBytesLoaded==myBytesTotal){

delete this.onEnterFrame;

_root.nextFrame();

}else{

this.stop();

}

}

6.从主场景时间轴第2帧起制作你的flash影片。


注解:





this.onLoad=function(){

myBytesTotal=_root.getBytesTotal();

}

此段代码是指,当影片剪辑(本例指两矩形和一动态文本框所存在的主场景)加载时,读...

完整阅读本文...]]> 2005-07-06 <![CDATA[自己动手制作手机Flash主题动画]]>   现在智能手机已成为时下数码领域里的热门话题,很多数码发烧友都用上了高端智能手机并致力于应用方面的研究。顺应热潮,Macromedia公司也开发了在手机上应用的Flash动画播放器:Flash
Lite 1.1。最初这个播放器只能应用于i-mode手持设备,后来索爱、诺基亚品牌的一些手机也能使用这个播放器了。在今年市面上已经可以看到捆绑了Flash
Lite 1.1的手机,尤其是三星手机和Macromedia达成了合作协议,全面支持Flash Lite 1.1。


  既然手机上能够使用Flash动画主题,很多喜欢Flash的朋友一定会问,我们该怎么制作呢?Flash MX Pro 2004提供了一些现成的工具用来制作手机上的Flash动画主题,今天我们就一起用Flash
MX Pro 2004制作一个简单的手机动画主题,从而了解基本流程和方法。


  背景知识:Flash Lite 的应用条件


  Flash Lite是类似于Flash 4.0的手机用程序,为什么是Flash4这么早的版本呢?毕竟智能手机系统的CPU不能和电脑相比,要在手机上畅快的运行Flash动画必须对SWF文件有所限制,限制的内容主要在于:文件体积不超过20k,不能使用手机不支持的字体,不支持复杂的ActionScript,动画循环,过多的层、元素,不要使用图形元素以及透明效果等等。由于上述的种种条件,用Flash
MX Pro 2004创作的Flash动画最好使用Tween组合、关键帧动画、使用手机内置的字体、优化路径等等。


  手机Flash主题动画制作


  一、准备手机主题素材


  根据要求设计的手机动作非常简单,因此我们可使用画面丰富的图片组合创作简单的动画效果。素材图片的大小要根据设计的手机主题的机型来决定,打开Flash
MX Pro 2004,选择从模板新建一个文件,可看到移动设备模板选项(图1)。




图1


  移动设备模板提供了多种品牌手机的模板,这些都是直接能够在手机上运行的(Macromedia与其达成的合作),我们选择市面上比较普遍的诺基亚7650手机模板,确定后返回Flash编辑的主场景可以看到手机的外观,在层面板上还可看...

完整阅读本文...]]> 2005-07-05 <![CDATA[文本框滚动缓冲效果]]> 效果如下:





今天写了这个效果的代码

用在主页的diary里

觉得以前用scroll对象来控制文本框,滚动起来比较生硬


其中drag为滚动条名字

block为文本框

b_up,b_down为上下滚动按钮


主要方法是用block始终跟随drag的位置变化而滚动

而b_up,b_down还有鼠标滚轮都是直接控制drag的位置变化的,从而间接控制文本框的滚动


            // JTL
// http://www.hartech.cn
// e-mail: jtl.zheng@gmail.com
//初始化函数
function Var() {
//滚动条与上下按钮的间隙
space = 31;
//上下按钮的滚动速度
updown_speed = 5;
//文本框的滚动范围
block_range = block._height-mark._height;
//文本框的初始位置
block_origin = block._y;
//滚动条的滚动范围
drag_range = b_down._y-b_up._y-2*space;
//滚动条的初始位置
drag_origin = b_up._y+space;
//初始化滚动条位置
drag._y = drag_origin;
//滚动缓冲系数
k = .1;
}
Var();
//block为文本框,始终跟随滚动条(drag)变化
block.onEnterFrame = function() {
//pos为文本框目标位置
pos = block_origin-(drag._y-drag_origin)*block_range/drag_range;
//缓冲效...

完整阅读本文...]]> 2005-07-04 <![CDATA[好玩的麦克风]]> 首先看这个例子,点击Allow[允许],并用麦克风发出声音


效果如下:




OK,下面我们来一步步的实现上面这个FLASH的功能:



1.打开Flash并新建一个300*200的场景



2.用工具栏中的画圆工具在场景中画一个适中的圆形




3.将这个圆形转化为元件,并设置为电影夹子——选择刚才所画的圆形,点击F8键或者点击[修改][Modify]-[转化为元件][Convert
to Symbol],在对话框中选择[电影夹子][Movie Clip],点击[确定][ok]



4.完成上一步后,我们在场景中点击这个元件,在属性面板中的[Instance Name]中输入Circle



5.现在我们可以在时间轴的第一桢写入我们的ActionScript命令——点击时间轴面板中的第一桢,点击F9或者[窗口][Window]-[动作][
Development Panels-Action],将下面的程序输入动作面板当中:



代码:


m = Microphone.get(); 
attachAudio(m);
m.setUseEchoSuppression(false);
onEnterFrame = function () {
circle._xscale = circle._yscale = m.activityLevel+50;
};

6.完成上面的步骤,你就可以在你的网页中预览了——[文件]-[发布预览]-[HTML]。 下面我们来为你解释每一行代码的意义:



代码:

完整阅读本文...]]> 2005-06-16 <![CDATA[Flash Lite 1.1 FSCommand2 用法列表(下)]]> 平台相关指令


平台相关指令::日期和时间


GetDateDay()


status = FSCommand2( “GetDateDay” )

获得当前的日期(1-31)。

返回 -1 为不支持,支持则返回 1-31 之间的数字。


GetDateMonth()


status = FSCommand2( “GetDateMonth” )

获得当前的月份(1-12)。

返回 -1 为不支持,支持则返回 1-12 之间的数字。


GetDateWeekday()


status = FSCommand2( “GetDateWeekday” )

获得当前的月份(0-6)。

返回 -1 为不支持,支持则返回 0-6 之间的数字。


GetDateYear()


status = FSCommand2( “GetDateYear” )

获得当前的年份。

返回 -1 为不支持,支持则返回数字,如:2005。


GetLocaleLongDate()


status = FSCommand2( “GetLocaleLongDate”, “longdate” )

获取当前的长日期串。日期格式根据手机本身以及 Locale 来确定。日期值指向到一个字串。

返回 -1 为不支持,0 则为支持。

以下是两个返回的 longdate 的例子:

October 16, 2004

16 October 2004


GetLocaleShortDate()


status = FSCommand2( “GetLocaleShortDate”, “shortdate” )

获取当前的短日期串。日期格式根据手机本身以及 Locale 来确定。日期值指向到一个字串。

返回 -1 为不支持,0 则为支持。

以下是两个返回的 shortdate 的例子:

10/16/2004

16-10-2004


GetLocaleTime()


status = FSCommand2( “GetLocalTime”, “time” )

获取当前的时间串。时间格式根据手机本身以及 L...

完整阅读本文...]]> 2005-05-09 <![CDATA[Flash Lite 1.1 FSCommand2 用法列表(上)]]>

  这些资料其实是从 Flash Lite 1.1 的文档翻译来的,是为了今后查找的时候更方便一些而已。这些功能并不是所有手机都会支持,需要上机测试才能了解是否支持。


  Flash Lite 1.1 目前支持功能相对较强的 FSCommand2,这在普通的 FLash 播放器中是不支持的。相对 FSCommand,有如下的不同:



  1. FSCommand2 可以使用任意多的参数;

  2. FSCommand2 在动画中被立即执行,而 FSCommand 则是在一帧结束后才执行;

  3. FSCommand2 可以有返回值,以便判断是否成功。


  FSCommand2 主要分成三类:普通指令、控制影片播放的指令、平台相关指令。下面是详细内容:


普通指令


普通指令::URL 编码相关


Escape


status = FSCommand2( “Escape”, original, encoded )

URL 编码指令,将 original 编码成 encoded。

返回 0 失败,返回 1 成功。


Example:

original_string = “hello, how are you?”;

status = fscommand2(”Escape”, original_string, “encoded_string”);


Unescape


status = FSCommand2( “Unescape”, encoded, original )

URL 解码指令,将 encoded 解码成 original。

返回 0 失败,返回 1 成功。


Example:

string2 = “Hello%7B%5BWorld%5D%7D”;

status = fscommand2(”Unescape”, string2, “normal_string”);


普通指令::输入框相关


SetInputTextType(...

完整阅读本文...]]> 2005-05-09 <![CDATA[<俊俊教程系列>之脚本控制的鼠标弹性指针效果]]>
  首先创建画布喽 大小随意 针速设成60 然后随便拖张图片当背景



  然后我们找一个可以用来当鼠标指针的小图片把图片转换成影片剪辑命名为“指针"



  新建一个层把“指针"拖到场景中

  接下来就开始写脚本楼


  在指针剪辑 的属性栏里 把它命名为mc_mouse

  然后在影片剪辑上加入脚本

onClipEvent (load)
{
xPos = 0;
yPos = 0;设置x,y坐标的初始位置
}
onClipEvent (enterFrame)
{
elastic = 0.400000;//设置弹性系数
friction = 0.700000;//设置摩擦力系数
xfriction = (xPos - _x) * elastic + xfriction * friction;
yfriction = (yPos - _y) * elastic + yfriction * friction;//设置当鼠标移动后的位置改变量
this._x = this._x + xfriction;
this._y = this._y + yfriction;//设置鼠标现在的位置
}

  然后我们回到主场景 新建一个层作为脚本层



  在第一针插入空白关键针 写上脚本

fscommand("fullscreen", "false");//指定 播放器为 常规菜单视图。
fscommand("allowscale", "false");//播放器以始终按 SWF
文件的原始大小绘制 SWF 文件
fscommand("showmenu", "false");
Mouse.hide();//隐藏鼠标
mc_mouse.xPos = _root._xmouse;
mc_mouse.yPos = _root._ymouse;//设置横纵坐标的位置



  将第2针转换成空白关建针写上
gotoAndPlay(1);

效果预览:



2005-05-08 <![CDATA[<俊俊教程系列>之逐渐出现的马赛克遮照]]>
把影片剪辑放在主场景第一针

在该影片剪辑上写下如下AS


onClipEvent (load)//当影片剪辑出现在时间轴上时,执行大括号里的语句 {
numY = 56;
numY = 70;;//定义图象显示的尺寸
numPerFrame = 60//定义针速
currSquare = 0;
choices = new Array();
for (i=0; i<numX*numY; i++) {
choices.push(i);//定义一个新的数组 并不断增加数组长度
}
_root.createEmptyMovieClip("mask", 0);//
this.setMask(_root.mask);//创建一个影片剪辑 作为遮照
function drawSquare(x, y) {
with (_root.mask) {
moveTo(x, y);
beginFill(0x000088);
lineTo(x+10, y);
lineTo(x+10, y+10);
lineTo(x, y+10);
endFill();//画出这个遮照, 形状为10*10象素的方块
}
}
}
onClipEvent (enterFrame)//影片剪辑针频不断触发此动作 {
if (currSquare<numX*numY) {
for (i=0; i<numPerFrame; i++) {
j = random(choices.length);
t = choices[j];
choices[j] = choices[choices.length-1];随机选择方快出现的时间
choices.pop();//开始删除数组choices中的元素
x = t%numX;
y = Math.floor(t/numX);//返回参数中表达式的下限值
drawSquare(x*10, y*10);
}
currSquare += numPerFrame;
this._alpha = currSquare/(numX*numY)*100;//设置透明度
}
}

好了现在可以导出看效果了



完整阅读本文...]]>
2005-04-20
本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2005-08-31 · 原址 http://www.flashempire.com/include/rss/rssTutor.php ← Flash 保存计划