关于少儿编程:如何在-kitten-里生成动态个数个立方体水平方向平铺以及避免闪烁问题

成果如下: 一个立方体: 两个立方体: 三个立方体: 实现思路要害是求出第一个立方体开始绘制的第一个点的程度方向坐标。 我引入三个变量,别离是立方体的个数,第一个立方体的顶点程度方向坐标和第二个及其之后的顶点程度方向坐标。 我冀望将这些立方体尽可能布局在屏幕的正中,因而须要计算第一个立方体的初始顶点的程度坐标。后续的立方体定点坐标,只需在此基础上递增正方体的边长即可。换言之,这些立方体从左到右顺次布局。 正方形变长 × 立方体个数的和再除以2,除以2保障第一个顶点在屏幕正中。 而后在循环体里绘制立方体。每绘制一次之后,将立方体定点程度坐标往右减少正方形边长的偏移量,而后将画笔抬至新的 x 坐标。 Kitten 里如何解决动静绘制立方体后呈现的闪动问题问题:如果有三个立方体,则第二个和第三个,在响应用户事件从新绘制时,会呈现 flicker 即闪动问题。 如果将初始的立方体个数硬编码为2: 依然会呈现闪动问题。 如果不加这个延时积木,第二个及其当前的立方体会频繁闪动。如果加上,升高了闪动的频率。[外链图片转存失败,源站可能有防盗链机制,倡议将图片保留下来间接上传(img-TTZrOwCT-1675757941682)(null)] 感觉第二个立方体的绘制有提早,和第一个立方体一样不是立刻实现的。难道第一个立方体没有革除掉? 时延加到 0.5秒就比拟显著了。每次事件响应,第一个立方体总是立刻呈现,而后才是第二个立方体刷的一下进去。 我把循环体内的积木开展,发现没有任何闪动问题,所以问题呈现在循环积木自身。 最初的解决方案,将第一个立方体的绘制同其后立方体的绘制拆离开。后者放在循环体内。问题解决:

February 18, 2023 · 1 min · jiezi

关于少儿编程:使用-Kitten-编程猫绘制一个-Y-方向平铺的立方体集合

成果如下图所示:咱们实际上应用了 2D 来模仿 3D 成果。 应用程序启动时,默认只绘制一个立方体,因而咱们在初始绘制的函数里,只执行动静绘制 X 方向的立方体这一个逻辑。因为默认 X 方向的立方体只有1个,所以只会绘制一个立方体。 每次动静绘制 X 方向的立方体,都会首先计算 X 方向立方体初始定点的 X 和 Y 坐标。之所以每次绘制前都会从新计算,是因为咱们的利用容许用户动静增加新的立方体,即总的立方体个数会动静减少。 为了确保初始立方体在屏幕正中绘制,咱们计算 x 方向立方体初始顶点 X 坐标的公式如上图所示,用立方体棱长乘以 X 方向的立方体个数再除以2. 从左到右绘制全副立方体的逻辑是通过下图的反复执行积木实现的。在调用绘制单个立方体积木之前,确保变量 X方向动静立方体X坐标的值被正确设置。 在循环体内,变量 X方向动静立方体X坐标 的值被累加,步长为立方体棱长。如果想实现拆分成果,在这个步长根底上再减少50即可。 拆分成果如下: 在事件响应函数里,须要顺次绘制X,Y 和 Z 三个方向的立方体。 Y 方向立方体的绘制比较简单,在第一个点的立方体绘制结束后,回到点1,将点1的朝向调整旋转角度,而后挪动斜边变量代表的步数,即到点2. 到了点2之后,调用动静绘制Y方向立方体 函数,在外面每次调用从左到右绘制全副立方体函数之前,先设置 X 方向立方体初始顶点的 X 和 Y 坐标。这个坐标通过首先回到最初始计算出来的原点,而后每次沿着旋转角度方向,挪动斜边长度的 N 倍来达到新的起始点。此处 N 即为 y 方向的循环次数。

February 18, 2023 · 1 min · jiezi