CityMaker学习教程10 示例代码的使用Javascript

本文介绍CityMaker示例代码中JavaScript的使用,指出BS版本获取文件位置的困难,并提供解决方案。主要涉及cm7.js的配置型结构体和类定义,以及cm7_sample_util.js的功能性函数,包括三维窗体初始化和FDB加载。作者计划组装一个MVC结构的示例,实现功能模块化。完整基础版将免费对外发放,高级功能可申请支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例代码中的CS版本和BS版本是对应的,基本都是一对一的,不过BS有些代码跑起来比较困难,比如说这里用到的获取文件位置的代码 var skyboxPath = getSamplesRelatePath(“/Media/skybox”);这个函数调用内容如下:

var flag = unescape(location.pathname).lastIndexOf("Samples");
if (flag > 0) {
        return (unescape(location.pathname).substring(1, flag) + "Samples");
    }         

这个函数就经常性的获取不到对应的文件夹位置,会报错,这里我用了一个替换函数

 //获取网络路径
    function abspath() {
        var abspath = unescape(window.location.href);
        var index = abspath.indexOf("?");
        if (index > 0) abspath = abspath.substr(0, index - 1);
        index = abspath.lastIndexOf("/");
        var index2 = abspath.lastIndexOf("\\");
        index = (index > index2) ? index : index2;
        if (index <= 0) return abspath;
        abspath = abspath.substring(0, index);
        if (abspath.substring(0, 1) == "/") abspath = abspath.slice(1);
        var re = /file:\/\/\//gi;
        if (abspath.match(re) != null) abspath = abspath.replace(re, "");
        return abspath;
    };

这个函数在获取当前执行html在网站中的绝对路径的时候非常好用,当我们调用天空图片的时候,只需要abspath()+”skybox//1_bk.png”即可调用到网络路径的图片了。
1、cm7.js里面放的都是一些结构体和类的定义,属于配置型js,如果觉得太大可以拆解开,用到哪个把哪个提取出来放到其他地方。
2、cm7_sample_util.js是功能性的,里面有初始化三维窗体,加载FDB,2个大函数,包括本地FDB和网络的FDB。

这个程序包代码量很庞大,但是封装相对较松散,每个示例都实现了片段功能,没有针对业务进行组装,我后续会组装一个完整的MVC结构示例代码,将功能进行模块化定义,方便后续的使用。

具体结构如下:

这里写图片描述

这套整个写完基础版会免费对外发放,涉及高级一点的功能可以申请。
Model如下:
这里写图片描述

如需支持请联系MrSun
sunhaihong@gvitech.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值