主题:  DHTML 系列教程6 - 滑动

QQlan

职务:版主
等级:1
金币:1.0
发贴:158
注册:2000/9/19 10:35:21
#12001/3/13 2:11:24
滑动(Sliding)
翻译:QQlan

Sliding就是我所说的动画或者滚动效果. 使用looping (或者 iterating) functons. 慢慢的移动层,你能制作出任何你能想象的动画效果.

首先要有移动代码:

block.xpos += 5
block.left = block.xpos


这一段实现向右移动5 pixels. 然后做一个循环.

function slide() {
    if (block.xpos < 300) {
        block.xpos += 5
        block.left = block.xpos
        setTimeout("slide()",30)
    }
}

if 是一个条件语句, 用来判断什么时候停止移动. 在这段代码中, 当x-位置 超过300 pixels将停止移动. setTimeout() 用来创建循环. 30是以毫秒计的时间. 本例中, function将每个30毫秒重复运行一次.

范例: sliding1.html (http://www.dansteinman.com/dynduo/examples/sliding1.html)

按照给定的角度移动

使用初中学的三角函数, 我们能够创建能按角度移动的元素.
如果你已经忘记了, 这里有一张快照帮你回忆.


需要4个属性来初始化带角度的object.


object.angle = 30
object.xinc = 5*Math.cos(object.angle*Math.PI/180)
object.yinc = 5*Math.sin(object.angle*Math.PI/180)
object.count = 0

我们计算x 和 y 的变化值 来确定需要向上向下移动多少. 用角度*MathPI/180 得到弧度 -- 也就是sin 和cos. count 将被用来确定需要循环多少次.

还是用block例子来解释. 下面是一个能按给定角度移动元素的function.


function init() {
    if (ns4) block = document.blockDiv
    if (ie4) block = blockDiv.style
    block.xpos = parseInt(block.left)
    block.ypos = parseInt(block.top)
    block.angle = 30
    block.xinc = 5*Math.cos(block.angle*Math.PI/180)
    block.yinc = 5*Math.sin(block.angle*Math.PI/180)
    block.count = 0
}

function slide() {
    if (block.count < 25) {
        block.xpos += block.xinc
        block.ypos -= block.yinc
        block.left = block.xpos
        block.top = block.ypos
        block.count += 1
        setTimeout("slide()",30)
    }
    else block.count = 0


[b] if (block.count < 25) 表示, function将循环执行25次. ie4中, 这个block总共滑行125像素单位.

范例: sliding3.html (http://www.dansteinman.com/dynduo/examples/sliding3.html)

同时也有其他的范例, 用来改变角度.

Example: sliding4.html (http://www.dansteinman.com/dynduo/examples/sliding4.html)




-------------------------------------------------------------
5DMedia 版权所有, 转载请注明出处!