主题:  移动大背景

yhxiang49

职务:普通成员
等级:1
金币:0.0
发贴:65
注册:2002/2/25 14:53:54
#12002/7/20 12:38:32
我在移动大背景时(3200*2400的背景图),速度变得很慢(因为我里面用的组件很多)。屏幕刷新很慢,换小屏就一切正常。但是我的要求不是不能小于800*600。
请问如何能解决这个问题。如何优化程序。
请各位给点见意。

谢! 急,急,急,急,急,急!



thelcg

职务:普通成员
等级:1
金币:0.0
发贴:106
注册:2002/6/23 16:32:23
#22002/7/21 12:32:02

property pSprite
property pLocH

on beginSprite me
pSprite = sprite(me.spriteNum)
pLocH = float(pSprite.locH)
end

on MoveLand me, h
pLocH = pLocH - h
CheckLocH(me)
pSprite.locH = pLocH
end

on CheckLocH me
if pLocH > 640 then
pLocH = pLocH - 1280
end if
if pLocH < -640 then
pLocH = pLocH + 1280
end if
end



thelcg

职务:普通成员
等级:1
金币:0.0
发贴:106
注册:2002/6/23 16:32:23
#32002/7/21 12:34:01
You can move the picture or graphic, and set the graphic same to the stage.



D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
注册:2007/4/9 9:48:37
#42002/7/21 16:19:31
www.director-online.com/buildArticle.cfm?id=841
用imaging lingo滚动
关于优化,方法是有的,但是具体情况要到细节才能有方案
如果你的背景图要求的精度不是很高,比如说地图等,就可以直接把图
变为1600*1200,然后在scroll时放大一倍
还可以像一些游戏一样用 [list]来显示(特别是有规律的背景)



yhxiang49

职务:普通成员
等级:1
金币:0.0
发贴:65
注册:2002/2/25 14:53:54
#52002/7/23 8:34:58
thelcg在上个帖子中说
引用:

property pSprite
property pLocH

on beginSprite me
pSprite = sprite(me.spriteNum)
pLocH = float(pSprite.locH)
end

on MoveLand me, h
pLocH = pLocH - h
CheckLocH(me)
pSprite.locH = pLocH
end

on CheckLocH me
if pLocH > 640 then
pLocH = pLocH - 1280
end if
if pLocH < -640 then
pLocH = pLocH + 1280
end if
end



这种方法我想不能实现,因为我的背景是至少是的3200*2400以上的而且是loch, locv都可以移动,我目前遇到是可以移动但速度不行。谢!



laosan

职务:普通成员
等级:1
金币:0.0
发贴:78
注册:2001/10/26 10:18:07
#62002/7/24 23:23:32
切图



玉制小人

职务:普通成员
等级:1
金币:1.0
发贴:205
注册:2002/9/19 15:29:00
#72002/9/20 14:38:17
把舞台的部分动态拷贝是一个不错的主意,上面的方法不是不能用哦,



night_5d

职务:普通成员
等级:2
金币:1.0
发贴:275
注册:2000/12/15 21:24:38
#82002/9/21 10:38:35
directorX在上个帖子中说
引用:
看来某些高级用户真是徒有虚名呀!
真正的解决方法当然不是移动大图,动得了吗?不妨将显示在舞台上的部分动态拷贝过来,这样不就解决了吗!
怎么拷贝?如果你要问的话,我劝你离Director远点吧!

directorX说话真是气人,如果你把目光放的广一些的话,我想你就会改变你的想法了。关于移动大面积背景图的问题,在国外的游戏中已经解决了,而且解决得非常好,虽然不知道是如何实现的,但我知道可以实现。

并且我想编程的人都知道,要实现一种功能或效果可以有很多种实现办法,我们只是选择一种最适合的办法来实现罢了,如果抱着一种办法不放的话,我想是不会有什么进步的,只能说是一种稍微高级点的编程机器而已,因为不会更新和创造。

另外,我想这个论坛的出现,是为了让大家有一个可以方便交流的空间,促使我们可以共同进步,说大一些的话是提高我国的多媒体技术水平。正像yhxiang49的签名一样。
我们兴趣相同,我们来到这里;
我们渴望进步,我们来到这里;
我们需要帮助,我们来到这里;
我们乐于助人,我们来到这里。
如果每个人留言都像您这么咄咄逼人的话,我想在这里您将得不到任何东西,不仅仅是技术方面的。

有点灌水嫌疑了,但实在是看不过,才多说几句的。对于移动大背景的问题,应该值得好好研究一番,我想我可以到macromedia的论坛上去问问,虽然我得E文不是很好,但是我想我可以外国的高手们看懂,并且可以感受到我们的技术交流是在一种平等和谐的气氛中进行的,而不是某人高高在上,说话咄咄逼人。


[img]http://61.144.28.245/hjc/web/non-cgi//usravatars/paladin.gif[/img]
I thirst for freedom

玉制小人

职务:普通成员
等级:1
金币:1.0
发贴:205
注册:2002/9/19 15:29:00
#92002/9/21 13:56:08
我同意看法,不同意你的过激的批评。。交流应尽量在和平环境中,但是directorX也发新帖道过歉了,是你没看而尔



truka

职务:普通成员
等级:1
金币:0.0
发贴:54
注册:2001/5/21 17:13:42
#102002/10/18 14:09:31
如果不更改stage大小,一切方法都是徒劳的,
除非使用256色显示。



小春老师

职务:普通成员
等级:2
金币:1.0
发贴:257
注册:2001/7/14 14:23:45
#112002/10/25 23:18:30
将你的大背景导入到flash中,输出成png格式,图片会小很多,然后再倒入dr,我想会好些.



不要笑我

职务:普通成员
等级:1
金币:0.0
发贴:20
注册:2002/7/24 17:20:42
#122002/11/5 11:18:17
怎样才能动态拷贝,请各位指点一下!谢谢!!



改将

职务:普通成员
等级:1
金币:0.0
发贴:102
注册:2006/2/11 1:14:46
#132002/12/1 23:27:28
使用image lingo里面的copyPixels()函数,这是最好的方法,其他的方法都是不太可取的了!具体看54zq提供的连接,方法非常的清楚!



directorX

职务:普通成员
等级:1
金币:1.0
发贴:168
注册:2002/12/24 11:28:55
#142003/1/8 10:35:33
拷贝的方法可以考虑,我写了一个行为,效果很好,你可试试!

--by wjq

property mySprite --sprite ref
property copyRect --copy area rect
property sourceMember --map
property oldLocz,clickpos
property isMousedown --mousedown:true; mouseup:false
property lastRect
property pWidth,pHeight

Global gMapMember

on beginsprite me
mySprite=sprite(me.spritenum)

sourceMember=member(gMapMember,2)

pWidth=sourceMember.width
pHeight=sourceMember.Height

vLeft=(pWidth-800)/2
vTop=(pHeight-600)/2
vRight=vLeft+800
vBottom=vTop+600
copyRect=rect(vLeft,vTop,vRight,vBottom)

mySprite.member.image.copypixels(sourceMember.image,mySprite.member.rect,copyRect)

cursor 260
end

on mousedown me
clickpos=the mouseloc
lastRect=copyRect
isMousedown=true
cursor 290
end

on mouseupoutside me
mouseup me
end

on mouseUp me
isMousedown=false
cursor 260
end

on exitframe me
if not isMousedown then exit
dxy=the mouseloc-clickpos
copyRect=lastRect.offset(-dxy[1],-dxy[2])
if copyRect.left<0 then copyRect=copyRect.offset(-copyRect.left,0)
if copyRect.top<0 then copyRect=copyRect.offset(0,-copyRect.top)
if copyRect.right>pWidth then copyRect=copyRect.offset(pWidth-copyRect.right,0)
if copyRect.bottom>pHeight then copyRect=copyRect.offset(0,pHeight-copyRect.bottom)

mySprite.member.image.copypixels(sourceMember.image,mySprite.member.rect,copyRect)
end



directorX

职务:普通成员
等级:1
金币:1.0
发贴:168
注册:2002/12/24 11:28:55
#152003/1/9 17:02:17
我又改了一下,能自适应舞台!