
难度:新手 类别:编程、图形 术语表与基本概念 你可以创建、编辑包含一个或多个图层的地图。地图资源中的所有图层可以批量渲染,也可以逐层分别渲染。

地图图层的起始索引为0,地图资源的0号图层用于逻辑标记,该图层的含义可由你自行解读;而1、2、3号等其他所有图层均用于渲染。

地图通过LOAD_RESOURCE或LOAD_BLANK加载。前者从磁盘加载已编辑的地图资源,后者加载空白地图仅供运行时访问,且LOAD_BLANK加载的包括0号在内的所有图层均用于渲染。地图并非直接由像素填充,而是由每个磁盘中唯一的【图块资源】中的图块填充。

操作 MAP m, x, y, r = 0:在特定位置绘制一个或多个地图图层。 加载函数会返回一个图层列表。将整个列表或单个图层传递给此MAP函数的m参数进行渲染,此函数不渲染逻辑标记。 尝试以下代码: layers = load_resource("galaxy_scroll.map") def update(delta) map layers, 0, 0 enddef update_with(driver(), call(update)) 这等效于: layers = load_resource("galaxy_scroll.map") layer1 = get(layers, 1) layer2 = get(layers, 2) layer3 = get(layers, 3) def update(delta) map layer1, 0, 0 map layer2, 0, 0 map layer3, 0, 0 enddef update_with(driver(), call(update)) 获取、设置瓦片 这些函数用于获取和设置地图的瓦片。它们适用于来自磁盘资源或空白的地图。详细信息请阅读手册: MGET m, i, x, y MSET m, i, x, y, v 自动排序 SET_ORDERBY(drv, rule ...):设置图形命令的排序规则;不调用此函数时默认为“nil”。rule ... 可以是“nil”“map”“spr”“all”中的一个或多个;“all”是“spr”和“map”的快捷方式,本指南仅解释“map”。 有时我们需要指定多个对象的渲染顺序,只需很少的代码修改即可实现。调用上述带有“map”参数的函数后,BASIC8 将根据队列索引自动对所有地图图层、精灵和其他图元按以下从上到下的顺序进行排序: 0. 地图的第1层 1. 地图的第2层 2. 精灵 3. 地图的第3层 4. 其他形状图元,如圆形(CIRC)、矩形(RECT)等在“map”排序模式下,你可以指定量化图像的队列索引,详情请阅读手册。 尝试以下代码并进行调整: set_orderby(driver(), "map") ' 注释此行以查看差异。 galaxy_scroll = load_resource("galaxy_scroll.map") spaceship = load_resource("spaceship.sprite") spaceship.play() x = 8 y = 56 v = 20 def update(delta) if btn(0) then x = x - delta * v elseif btn(1) then x = x + delta * v elseif btn(2) then y = y - delta * v elseif btn(3) then y = y + delta * v endif map galaxy_scroll, 0, 0 spr spaceship, x, y enddef update_with(driver(), call(update))
2026-03-27 01:00:10 发布在
BASIC8
说点好听的...
收藏
0
0
