主题:  如何用lingo控制绘图?

rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
#12001/2/10 20:34:32
各位高手,我想用lingo来控制绘图,例如直线,可是每次只能绘制一次,下次又重新绘制了,如何才能用lingo重复绘图呢?绘图的member是什么呢?bitmap还是vectorShape?谢谢。

我的代码:(加在一个按钮上,我想用按钮重复绘图,按钮在通道1)

property pDrawNum
property pDrawMem

on beginsprite me
pDrawNum=0
end


on mouseUp me
pDrawNum=pDrawNum+1
if pDrawNum=1 then
pDrawMem=new(#vectorshape)
pDrawMem.name="line"
end if

member(pDrawMem).vertexList = [[#vertex:point(0,0)],[#vertex:point(100,100)]]
tempcolor=member(pDrawMem).strokecolor
tempcolor=rgb(255,0,0)
member(pDrawMem) .strokecolor=tempcolor
puppetSprite 2,TRUE
sprite(2).member=member(pDrawMem)

end

编辑历史:[这消息被rainy编辑过(编辑时间2001-02-11 14:09:20)]


D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
#22001/2/11 1:43:22
member(pDrawMem).addvertex(i,point(x,y))



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#32001/2/11 8:45:46
Director8支持vector和image两种方式和作图。
从你的帖子看,你指的是矢量作图。矢量作图比较典型的例子可以参考《Director7开发使用手册》相关章节。
我在macromediachina上发过用image lingo制作柱图和饼图的代码,与《Director7开发使用手册》中的实例相比,只用一个sprite即可,希望能对你有所帮助。



rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
#42001/2/11 14:07:39
谢谢donlee,可能是我没有表达清楚,我的意思不是按下按钮一次,将所有的图形绘制完(不用repeat)。而是单击一次,绘制一次,就存在如何正确显示初始图形的问题。
另,没有买到《Director7开发使用手册》,烦请详述,谢谢。



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#52001/2/12 8:43:20
其实这个问题您自己已经解决了,代码中不是有:
---------------------
property pDrawNum
property pDrawMem

on beginsprite me
pDrawNum=0
end

on mouseUp me
pDrawNum=pDrawNum+1
--------------------

下面加上
draw(pdrawnum)或sendsprite(X,#draw,pdrawnum)

只要在合适的地方加入
on draw number
--用if else或case,根据number值作相应的图
end

不知我这次理解得对否?



rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
#62001/2/12 23:00:44
谢谢donlee兄,我明白你的意思了,呵呵。我怎么没想到呢?
另外,说到lingo的“面向对象”,我想到一个效率的问题:
从前不用对象编程,很少写sprite behavior,一般用movie script,常用global来定义全局变量,这样我想也有一个好处,拿那个“面向对象”的教程来说(入侵者),为能在适当的时候从屏幕边缘返回,入侵者总在检测屏幕宽度,虽然在beginsprite句柄中定义一次,但有多少个入侵者,就需要赋值多少次。
若在movie script中定义全局变量,只需要一次便可。这样的效率觉得要比面向对象的behavior要高啊,呵呵,理解的不正确之处,恳请指教。



donlee

职务:普通成员
等级:1
金币:1.0
发贴:271
#72001/2/13 10:59:19
关于效率,有多个方面,时间复杂度(比较一下冒泡法排序与快速排序),空间复杂度(比较一下深度搜索与广度搜索),还有人工方面的问题。
通常,在算法相同听情况下,面向对象可能在时间和空间复杂度都略逊于结构化编程,但考虑到代码的复用性、易于调试等等其它因素,面向对象还是更有意义的。对于系统而言,规范可能比技巧更重要--当然,仁者见仁,智者见智。
另外,在director中,behavior不一定比movie script效率低。