Board logo

标题: [教程]按钮的程序化(完) [打印本页]

作者: wda43779    时间: 2011-4-17 08:35     标题: [教程]按钮的程序化(完)

我们并不要求画板中的按钮像真正的程序那样多才多艺,但我们还觉得画板按钮限制太多。为什么?如果把一个按钮作为一个语句来理解,按钮做不到哪些事?
    我认为是条件判断和循环。这篇教程就是讲如何实现条件判断和循环,以及它的原理的。

ps。第一次写教程,可能写的不怎么好。
作者: wda43779    时间: 2011-4-17 08:46

1.条件判断
    首先,我来介绍一个按钮“移动点”。它的功能很简单把某一点A移到另一点B处。可设置的也很少,就一项速度。
    平常我们都是把A移到与A无关的点B处,这里我们要以另一种方式来用它,B和A是有关的。
    来一个实例: 1.gsp (2.15 KB)
    ps。固然这个要求有很多种方法做到,但这个是对所有按钮及所有条件均有用的

附件: 1.gsp (2011-4-17 08:46, 2.15 KB) / 下载次数 8217
http://www.inrm3d.cn/attachment.php?aid=11453&k=99b96c9ee79c78179ff9a4974efdc827&t=1714082622&sid=XaarsP
作者: wda43779    时间: 2011-4-17 08:53

“这有什么用?”有人问。你细看一下,按钮是保持按下状态的。也就是说你它如果是依序执行的按钮的首按钮。后面的按钮永远不会执行。因此我在这种按钮上做文章,就可由条件来决定后面的按钮要不要执行。

    ps。下面要开始讲做法了。
作者: wda43779    时间: 2011-4-17 09:17

要求:建立两按钮,但某值0是执行A按钮。非0时执行B按钮。
  已知:按钮A、按钮B、某bool值Z(附文件: 2.gsp (3.64 KB)
  做法:
        1.建立一坐标系。
        2.新建一点D。
        3.度量xy值。
        4.计算x+1-Z。
        5.由x+1-Z与y,绘制点E。
        6.建立按钮移动D到E。
        7.计算x+1-abs(Z-1)。
        8.由x+1-abs(Z-1)和y,绘制点F。
        9.建立按钮移动D到F。
        10.建立系列按钮G(依序执行,1.A 2.移动D到E)
        11.建立系列按钮H(依序执行,1.B 2.移动D到F)
        12.建立系列按钮(同时执行,首动作停止,1.G 2.H)
        13. 改标签、隐藏不必要的东西。
  最终效果: 3.gsp (5.9 KB)

ps。bool值也是数,不过它非0即1,非1即0。

附件: 2.gsp (2011-4-17 10:33, 3.64 KB) / 下载次数 8112
http://www.inrm3d.cn/attachment.php?aid=11454&k=6bbfffcd01eb8596b36d862516a4b4d8&t=1714082622&sid=XaarsP

附件: 3.gsp (2011-4-17 09:17, 5.9 KB) / 下载次数 8126
http://www.inrm3d.cn/attachment.php?aid=11455&k=7808de5f59387438e0c35e9eda771e8c&t=1714082622&sid=XaarsP
作者: wda43779    时间: 2011-4-17 09:54

2.循环
    按钮怎么循环呢?我学过c语言,c的循环有三种,while、for、do-while,如果考虑得更深入一点,你就会发现其实都能用goto和if来实现。if在前面已经讲过了,就是条件判断,我们只要实现goto就可以了。
    “用系列按扭就可以了,楼主你直接讲做法吧!”有人插话。可惜,系列只能在目标创建出后才能建立,而我们要的goto是要在目标未建立立之前,就可创建了。
    “为什么?”插话的人又来了。一个典型的循环是这样的:系列A(依序执行,1.B 2.C)、系列B(你要重复做的事)、c(goto A)。这是一个简单的死循环,A要在B、C后建立,C要在A后建立(假设用的是系列),这种东西是完全做不出来的,所以这个提议是不能实现的。

    ps。版主的话给了我无穷的力量,我决定,作业留到晚上完成,打完再说。
作者: wda43779    时间: 2011-4-17 10:12

我们不能用系列来实现goto,那怎么办呢?我来介绍一下链接,它有三种用法,1.打开网页 2.转到另一页面 3.转到另一页面并激活该页面上的一个按钮。
    “有什么用呢?”用处大了,注意当你建立它后,你依然可以让它重新指向另一个按钮。这个特点使它在这个应用中超越了系列按钮,可以指向比他晚创建的对象。(只可惜不能指向同页的按钮,所以每完成一次循环,屏幕会闪一下。我曾用过某些方法让它指向同页的按钮,但每次都已以程序崩溃结束)
作者: wda43779    时间: 2011-4-17 10:27

要求:有一按钮A,请让画板重复执行它。
已知:按钮A(附文件: 4.gsp (2.22 KB)
做法:
    1.新建一页面2(原来的叫页面1,不显示页切换)
    2.在1中新建一链接B(指向2页面,不指向按钮)
    3.在2中新建一链接C(指向1页面,不指向按钮)
    4.系列E(依序执行,1.A 2.B)
    5.2中新建一点,建立隐藏点按钮D(总是隐藏)
    6.系列F(依序执行,1.D 2.C)
    7.链接B重指向F,C重指向E。
    8.改标签、隐藏不必要的东西。
最终效果: 5.gsp (4.38 KB)

附件: 4.gsp (2011-4-17 10:27, 2.22 KB) / 下载次数 8191
http://www.inrm3d.cn/attachment.php?aid=11456&k=e15e1b783b825839d72a43b8d5194613&t=1714082622&sid=XaarsP

附件: 5.gsp (2011-4-17 10:32, 4.38 KB) / 下载次数 8120
http://www.inrm3d.cn/attachment.php?aid=11457&k=7b26410154538b6fb3ef91fdcdade245&t=1714082622&sid=XaarsP
作者: wda43779    时间: 2011-4-17 10:29

(全文完)
作者: 一线天    时间: 2011-4-17 10:34

超赞!

我也曾想能不能实现if判断语句等但没深入研究,原来楼主对各种情况都研究出成果了,真牛。
作者: inRm    时间: 2011-4-17 10:34

感谢楼主。
作者: sanren    时间: 2011-4-17 11:09

4# wda43779
似曾相识,但我不懂程序化.
以前看过一个类似的按钮,学做一个,请帮分析

附件: 一步一个脚印.gsp (2011-4-17 11:09, 2.77 KB) / 下载次数 1928
http://www.inrm3d.cn/attachment.php?aid=11458&k=e489719d9cbe5d2e24885f90e379f4d5&t=1714082622&sid=XaarsP
作者: wda43779    时间: 2011-4-17 11:16

11# sanren


是不同的东西,那个只是因为制作简单,才用来演示的。这个方法真正用途是在A、B没有任何共同点时,比如说A播放函数,B动画点。
作者: zhengmh    时间: 2011-4-17 11:39

开眼界了,赞一个!几何画板看似功能简单,其实奥妙无穷,就象七巧板,可以拼出各种奇妙的图形。没有办不到,只有没想到,也许学习画板的乐趣就出与此吧!
作者: zjhdmyz    时间: 2011-4-17 12:21

楼主太牛了
作者: 田野风    时间: 2011-4-17 20:03

赞!
作者: jiangmingdar    时间: 2011-4-17 23:56

好厲害啊
真是獲益良多
作者: 黑天    时间: 2011-4-18 10:05

看来真是没有做不到的,只有想不到的。
谢谢楼主写的详细的教程。
作者: changxde    时间: 2011-4-18 11:29

没做到,是因为没想到该如何做,一旦有了方法,就能做到。
作者: 柳烟    时间: 2011-4-18 15:43

大家开发出用按钮的程序化的应用,这无疑意义远大。
作者: 清风2011    时间: 2011-4-20 07:42

谢谢分享 敢于探究 就有发现
作者: jxsyxxl    时间: 2011-4-20 16:35

谢谢分享。赞一个。
作者: ll1967    时间: 2011-4-23 16:05

感谢分享!
作者: maxzczx    时间: 2012-10-24 17:35

谢谢,学习中
作者: xiaoben    时间: 2012-10-24 21:10

牛哥,膜拜
作者: 画板崇拜者    时间: 2017-1-5 17:40

这个有实用之处吗?
作者: 无悔    时间: 2020-5-11 09:58

牛!牛!牛!牛!牛!牛!




欢迎光临 inRm3D: 画板论坛 (http://www.inrm3d.cn/) Powered by Discuz! 7.0.0