学习xml+Moviecliploader动态载入图片方法(四)
第四部分
目标:测试吧
现在给出我的全部代码:
时间轴部分:
var id=0;
var pagesize=8;
var pageno=1;
var myML=new MovieClipLoader();
var myobj=new Object();
myML.addListener(myobj);
myobj.onLoadComplete=function(){
trace("complete");
if(id<cnums+pagesize*(pageno-1)){
id++;
trace("当前id为"+id)
loadpic(id);
}//if(id<cnums+pagesize*(pageno-1))在该语句上,起初我把pageno-1写成了pageNo-1,而上一个trace语句能执行,我发现是该条件没通过,后来才检查到是写错了,所以说写代码要仔细
pagetotal=(nums%pagesize==0)?nums/pagesize:Math.floor(nums/pagesize)+1;
_root.count="当前页数为第"+pageno+"页"+"总页数"+ pagetotal ;
}
myobj.onLoadInit=function(tar){
tar._width=85;
tar._height=53;
tid=id-1;
cid=tid-pagesize*(pageno-1);
_root["loader"+cid].loading_mc._visible=false;
_root["loader"+cid].bg_mc._visible=false;
_root["loader"+cid].btn_mc.pid=tid;
_root["loader"+cid].btn_mc.showimg_url=id-1;//注意,这里的_root不能改为this,因为他包含在onloadinit事件中,里面的this是以myobj为基础的,可以在其中用trace(this),显示[object object]
_root["loader"+cid].btn_mc.onRelease=function(){
this.show_url=mylist[this.showimg_url].attributes.path;
trace(this.show_url)
ttid=this.pid;
myMCL.loadClip(this.show_url,"showimg")
trace(this.show_url)
}
}
var myMCL=new MovieClipLoader()//本来我不想再重新定义个监听对象,第一次载入还可以,但当Press舞台上的任意一个按钮,loader容器中的图片由于会执行myobj.onloadinit事件,但他不是执行第一个,导致图片载入不正常
var myobj2=new Object()
myMCL.addListener(myobj2)
myobj2.onLoadInit=function(tar){
//imgw=470
ming=imgurl
miaoshu=imgurl
imgoldw=tar._width
imgoldh=tar._height
w=imgoldw+"pix"
h=imgoldh+"pix"
trace("w="+imgoldw+"h="+imgoldh)//同一图片URL,即对同一图片press之后,虽然他们是一个url,但每press一 下,其值都会累加
/*bili=imgoldh/imgoldw
imgneww=imgw
imgnewh=imgw*bili
_root.showimg.onEnterFrame=function(){
showimg._width+=(imgneww-showimg._width)/2
showimg._height+=(imgnewh-showimg._height)/2
_root.onEnterFrame=function(){
showimg._width+=(imgneww-showimg._width)/2
showimg._height+=(imgnewh-showimg._height)/2
此种状态下,上面的宽高只能加一次,而不能缓冲到imgneww和imgnewh
}*/
url=mylist[id].firstChild;
lianjie.onPress=function(){
getURL(url,"_blank")
}
changeshow()//不要写在_root.showimg.onEnterFrame=function()内部
}
myobj2.onLoadProgress=function(target_mc,loadedBytes,totalBytes){
loaded=loadedBytes
loadtotal=totalBytes
daxiao=int(loaded/1024)+"Kb/"+int(loadtotal/1024)+"Kb"
baifenbi=int(loaded/loadtotal)
jindu=baifenbi
load_mc.load.loading._xscale=baifenbi*100
if(baifenbi=1){
load_mc.gotoAndPlay(10)
}
}
var myxml=new XML()
myxml.ignoreWhite=true;
myxml.onLoad=function(suc){
trace("xml loaded");
if(suc){
mylist=myxml.firstChild.childNodes;
nums=mylist.length;
loadmc();
loadfirstpic();
}
}
var lei=1;
myxml.load("list"+lei+".xml");
for(var i=1;i<=3;i++){
_root["lei"+i].lei=i;}
function loadmc(){
if(pagesize*pageno>nums){
cnums=nums%pagesize;}
else{
cnums=pagesize}
trace("mc shumu="+cnums)
for(var j=0;j<pagesize;j++){
removeMovieClip(_root["loader"+j])
}
for(var i=0;i<cnums;i++){
_root.attachMovie("loadmc","loader"+i,100+i);
trace(_root["loader"+i]._name)
_root["loader"+i]._x=90*(i%8);//(i%5)中的括号千万不能省略,否则坐标的错误会导致一些MC显示不出来
_root["loader"+i]._y=350+0*Math.floor(i/5);
}
}
function loadfirstpic(){
imgurl=mylist[id].attributes.path;
myML.loadClip(imgurl,_root.loader0.loadpic_mc)
myMCL.loadClip(imgurl,"showimg")
}
function loadpic(id){
imgurl=mylist[id].attributes.path;
lid=id-pagesize*(pageno-1);
myML.loadClip(imgurl,_root["loader"+lid].loadpic_mc)
}
function changeshow(){
showimg._x=0
showimg._y=0
_root.onEnterFrame=function(){
left=0
right=470
up=0
down=300
if(_root._xmouse>left&&_root._xmouse<right&&_root._ymouse>up&&_root._ymouse<down){
mousex=_xmouse
mousey=_ymouse
showimg._x-=(_root._xmouse-right/2)/10
showimg._y-=(_root._ymouse-down/2)/10
if(showimg._x>=left){
showimg._x=left
}
if(showimg._y>=up){
showimg._y=up
}
if(showimg._x<right-showimg._width){
showimg._x=right-showimg._width
if(showimg._x>=left){
showimg._x=left
}//加上这个判断很必要,因为有的图片会很窄,right-showimg._width成正,坐标会发生非正常移动
}
if(showimg._y<down-showimg._height){
showimg._y=down-showimg._height
if(showimg._y>=up){
showimg._y=up
}
}
}
}//end enterframe
}
fir_btn.onRelease=function(){
id=0;
pageno=1;
loadmc();
imgurl=mylist[id].attributes.path;
myML.loadClip(imgurl,_root["loader0"].loadpic_mc)
myMCL.loadClip(imgurl,"showimg")
}
last_btn.onRelease=function(){
trace("last");
pageno=(nums%pagesize==0)?nums/pagesize:Math.floor(nums/pagesize)+1;//判断总页数,注意pagesize==0千万不要写成pagesize=0(“=”是赋值运算符,左边必须是变量或属性)
id=pagesize*(pageno-1);//这句和前一句不能调换,否则id值的计算会以pageno=1,pagesize=20的初值来计算得0,然后i++得1,你可以调换一下看看,他只会TRACE出“complete 当前id为1”
loadmc();
imgurl=mylist[id].attributes.path;
myML.loadClip(imgurl,_root["loader0"].loadpic_mc)
myMCL.loadClip(imgurl,"showimg")
}
pre_btn.onRelease=function(){
pageno--;
if(pageno<=0){pageno=1
}
id=pagesize*(pageno-1);
loadmc();
imgurl=mylist[id].attributes.path;
myML.loadClip(imgurl,_root["loader0"].loadpic_mc)
myMCL.loadClip(imgurl,"showimg")
}
next_btn.onRelease=function(){
trace("release next");
pageno++;
var yeshu=(nums%pagesize==0)?nums/pagesizeMath.floor(nums/pagesize)+1);
if(pageno>=yeshu){
pageno=yeshu;
}
trace("总页数="+yeshu)
id=pagesize*(pageno-1);
loadmc();
imgurl=mylist[id].attributes.path;
myML.loadClip(imgurl,_root["loader0"].loadpic_mc)
myMCL.loadClip(imgurl,"showimg")
}
btn.onRollOver = function(){ //鼠标移动btn上时执行函数
onEnterFrame = function(){
shuom.scroll++; //动态文本向上一行一行的移动
}
}
btn.onRollOut = function(){ //鼠标移出btn
delete onEnterFrame; //文本滚动停止
}
//2008.5.18 5:13测试完工
//分类功能测试于7:37完成 平沙
MC部分:
lei1,lei2,lei3加入同样语句:
on (release) {
_root.id=0;
_root.pageno=1;//将id,pageno归零,否则单击转入另一类图片时,他会延续原来的id,pageno载入图片
_root.myxml.load("list"+this.lei+".xml");//myxml在根时间轴,所以要引用它,前面必须加路径_root
}
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |