posts - 22, comments - 61, trackbacks - 11, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

上篇文章介绍了及个简单的组合效果( Combine Effect),这篇文章介绍相关的API.
由于每个Effect类都继承于Effect.Base,在Effect.Base类中定义了上次提到的默认选项(options)和基本方法,这些基本方法是:

  • beforeSetup: 建立动画对象时调用该方法,接受当前效果对象obj为参数,所有的方法就接受这个参数.需要说明的是如果想取消当前效果,必须在boforeSetup阶段进行.
  • afterSetup:对象建立后调用,奇怪的是即便在beforeSetup阶段取消了当前的效果,这个方法也会执行.这可能是框架不太完善的地方,后面还有例子证明.
  • beforeUpdate:由于每一帧都调用update()方法,所以在每帧执行前都会调用beforeUpdate()方法.
  • afterUpdate:每帧执行后调用该方法.
  • beforeFinish:动画结束之前调用该方法
  • afterFinish:动画结束调用该方法

事件执行的顺序很显然:beforeSetup->afterSetup->beforeUpdate->afterupdate[->boforeUpdate->afterUpdate->......]->boforeFinish->afterFinish.

所有方法都带一个obj参数,这个obj参数的常用属性和方法

  • currentFrame属性: 当前帧数
  • options:当前动画的选项
  • state:当前状态:按照执行顺序分别是idle->running->finished
  • effects:返回核心对象的数组:每个effect都有element属性,可以返回作用的DOM元素
  • cancel():取消当前动画

取消当前动画

    var oAnimation=new Effect.Puff('imgPuffwithCancel',
        
{
            beforeSetup:beforeAnimationSetupWithCancel,
/*六个事件的执行顺序*/
            afterSetup:afterAnimationSetup,
            beforeUpdate:beforeAnimationUpdate,
            afterUpdate:afterAnimationUpdate,
            beforeFinish:beforeAnimation,
            afterFinish:afterAnimation,
            from:
0.2,
            to:
1
        }

    );
    $(
"msg").innerHTML="";
    _alert(
"Effect.Appear对象已经建立,当前状态:"+oAnimation.state);}


function beforeAnimationSetupWithCancel(obj)
{
    _alert(
"Effect.Appear对象将要安装(Setup),现在是取消的最好时机,当前状态:"+obj.state);
    obj.cancel();
    _alert(
"动画取消!");
}


function afterAnimationSetup(obj)
{
    
/*即便在beforeAnimationSetup中取消了Animation该事件也会执行,但是在afterSetup时cancel不起作用*/
    _alert(
"Effect.Appear对象已经安装(Setup),即便取消了动画afterSetup事件也会执行,当前状态:"+obj.state);

}



function afterAnimation(obj)
{
    
    _alert(
"Animation has been Finished!Current State:"+obj.state);
    obj
=obj.effects[0];/*注意Puff会注册两个Effects所以在取得动画源是需要使用*/
    _alert(
"currentFrame:"+obj.currentFrame+"\nfinishedOn(ms):"+obj.finishOn+"\nElement:"+obj.element.tagName+"#"+obj.element.id+"\nDuration(s):"+obj.options.duration+"\nFrom:"+obj.options.from+"\nTo:"+obj.options.to);
}

上面的例子运行效果在这里,这个系列的所有例子都放在这个目录下,而且在不断的更新.如果需要源代码,给我Email:yanghengfeng@163.com.
例子旨在说明问题,很明显afterAnimation不会执行,还得多说几句,对于特定的效果类,可能会由独有的接口,在使用的时候可以参阅源代码

Feedback

#1楼   回复  引用    

2007-11-08 21:10 by Yangxin[未注册用户]
好! 有没有什么好书介绍这玩意的 版主介绍一下

#2楼[楼主]   回复  引用  查看    

2007-11-09 20:33 by Hafeyang      
说实话 没有见到什么合适的书
要想深入学习Javascript可以参考 Javascript高级程序设计
http://book.csdn.net/bookfiles/110/" target="_new">http://book.csdn.net/bookfiles/110/

要了解Script.aculo.us 可以去官方网站 例子很多.

最直接的办法就是直接阅读源代码 Script.aculo.us Prototype
看完会大有收获的

#3楼   回复  引用    

2007-11-26 10:19 by 骑士00[未注册用户]
看见你的教程真是太兴奋啦,正在学习这个,能发给我一份这个教程的源代码吗?谢谢

#4楼[楼主]   回复  引用  查看    

2007-11-26 13:12 by Hafeyang      
就在这里下载
http://www1.qcxy.hb.cn/qphy/Script_Aculo_Us/" target="_new">http://www1.qcxy.hb.cn/qphy/Script_Aculo_Us/

#5楼   回复  引用    

2008-03-14 09:39 by 焱[未注册用户]
@Hafeyang
征服Ajax系列里有一本讲解Prototype1.5,Script.aculo.us,dojo的书,挺不错的



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 891339




相关文章:

相关链接: