array|译:Gamemaker Studio 2.3 语法详解( 六 )
y =_y;
}
functionLabel(_x,_y,_text):Element(_x,_y)constructor {
staticdraw =function(_ofs_x,_ofs_y){
draw_text (_ofs_x +x,_ofs_y +y,text);
};
text =_text;
}
这将首先调用父 constructor, 然后再调用子 constructor。
在子 constructor 中定义的静态变量优先于在父 constructor 中定义的静态变量 , 这就为覆盖父字段提供了一种方法--因此 , 用上述方法 , 你可以做到
varlabel =newLabel(100,100,"Hello!");
label .step;// 调用父 step 函数
label .draw(5,5);// 调用子 draw 函数
如果你确实需要父 method 是可调用的 , 你可以在覆写子 method 之前存储它 , 比如说
functionLabel(_x,_y,_text):Element(_x,_y)constructor {
static__step =step;// 现在引用父 constructor 的 step 函数
staticstep =function(_ofs_x,_ofs_y){
__step ;// 调用父 constructor 的 step 函数
// ...
};
// ...
}
异常处理
GameMaker 函数的结构通常是不抛出错误的 , 除非它肯定是你的错——所以 , 例如 , 试图打开一个不存在的文本文件将返回一个特殊的索引 -1, 但试图从一个无效的索引读取将抛出一个错误 。
不过 , 写允许失败的代码还是很方便的 , 不需要在过程的每一步插入安全检查 。 现在你可以了! 其工作原理如下 。
try{
// (可能引发错误的代码)
vara =1,b =0;
a =a div b;// 导致 "除以零 "的错误
show_debug_message("this line will not execute");
}catch(an_exception){
// 对错误信息做一些事情(或不做) , 这些信息是
// 现在存储在局部变量 an_exception 中 。
show_debug_message(an_exception);
}
"内置 "错误是带有几个变量的结构 。
- message : 一个字符串 , 包含对错误的简短描述 。 例如 , 如果你试图做整数除以 0, 它将是 "DoRem :: Divide by zero" 。
- longMessage : 一个对错误和 callstack 有较长描述的字符串 。 如果你不处理这个错误 , 这将出现在内置的错误弹出窗口 。
- Stacktrace : 表示调用堆栈的字符串数组 - 导致问题点的一连串函数名 。 当从 IDE 或使用 YYC 运行时 , 行号将包含在每个函数名之后(例如 gml__scr_hello (第 5 行)) 。
- : (技术上的)错误起源的脚本/函数的名称 。 这与抓取 stacktrace 中的第一项没有太大区别 。
try{
show_error ("hey",false);}catch(e){
show_debug_message(e.message);// "hey"
}
或通过使用 throw 关键字(允许任意的值被 "抛出") 。
try{
throw{
message :"hey",
longMessage :"no long messages today",
推荐阅读
- bleu|字节跳动火山翻译上新 38 个稀有语种,翻译能力再升级
- 软件和应用|iOS/iPadOS端Telegram更新:引入隐藏文本、翻译等新功能
- 模型|经逆向工程,Transformer「翻译」成数学框架 | 25位学者撰文
- csdn|[译]C# 是 TypeScript 的最好替补?
- IT|网友反映北京地铁将“站”译为Zhan不妥 官方:统一译法
- Google|Android 13早期编译版本泄露 揭示诸多细节体验调整
- 弯月|[译]用树莓派控制WS2812圣诞树灯饰
- 技术|百度翻译公布十年成绩单:翻译质量提升30个百分点
- 机器人|[原]Web 已死
- 方法论|[译]Objective-C依然占C位,Swift和SwiftUI在iOS 15中的使用情况