赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 0 |
经验 | 4355 |
最后登录 | 2012-7-20 |
在线时间 | 282 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 45
- 在线时间
- 282 小时
- 注册时间
- 2012-2-18
- 帖子
- 161
|
本帖最后由 dabojun 于 2012-5-17 14:56 编辑
‘‘──dabojun于2012-5-16 18:26补充以下内容
正在看迭代器的讲解,既http://blog.csdn.net/classwang/article/details/4692856 {:2_265:}
想知道里面的"/n"是什么意思呀??反复出现@
’’
还有这一段也不理解……~ 划红线的部分都不大理解的说呵… {:2_261:}
20.4.4 sort_by方法
sort方法会在每次进行比较时判断元素。让我们来计算一下前面比较字符串长度的示例中,length方法到底被调用了几次。
ary = %w(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20)
num = 0 # 调用的次数
ary.sort {|a, b|
num += 2 # 累加调用的次数
a.length <=> b.length
}
p num #=> 54
这个示例可以知道有20个元素的时候,length方法要调用54次。按理说对每个字符串调用一次length方法再排序就可以了,所以这里做了很多次多余的调用动作。当数组很长,或者判断元素的运算很耗时的时候,这些多余的调用动作会对整体执行时间造成很大的影响。
‘‘──dabojun于2012-5-17 14:16补充以下内容
关于over_trigger是否可以这样解释? {:2_260:}
# 跳跃中以外的情况下、启动判定是正面的事件
106. if not event.jumping? and not event.over_trigger?
107. event.start
108. result = true
109. end
110. end
111. end # (“if not”用法)(over为:以上,以外,trigger为:触发,启动判定/触发条件:0,1,2,3,4)
’’
‘‘──dabojun于2012-5-17 14:33补充以下内容
还有这段也不知是何意? 和计数器有何关系呢?计数器是计步数,还是时间倒计时窗口呢? {:2_255:}
# 找不到符合条件的事件的情况下
113. if result == false
114. # 正面的元件是计数器的情况下
115. if $game_map.counter?(new_x, new_y)
116. # 计算 1 元件里侧的坐标 (里侧的坐标又是何意?)
117. new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
118. new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
追加“巨大事件通行判定”部分脚本:
86. class Game_Player
87. #--------------------------------------------------------------------------
88. # ● 正面事件的启动判定
89. #--------------------------------------------------------------------------
90. def check_event_trigger_there(triggers)
91. result = false
92. # 事件执行中的情况下
93. if $game_system.map_interpreter.running?
94. return result
95. end
96. # 计算正面坐标
97. new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
98. new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
99. new_point = [new_x, new_y]
100. # 全部事件的循环
101. for event in $game_map.events.values
102. # 事件坐标与目标一致的情况下
103. if event.areas.include?(new_point) and
104. triggers.include?(event.trigger)
105. # 跳跃中以外的情况下、启动判定是正面的事件
106. if not event.jumping? and not event.over_trigger?
107. event.start
108. result = true
109. end
110. end
111. end
112. # 找不到符合条件的事件的情况下
113. if result == false
114. # 正面的元件是计数器的情况下
115. if $game_map.counter?(new_x, new_y)
116. # 计算 1 元件里侧的坐标
117. new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
118. new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
119. new_point = [new_x, new_y]
120. # 全事件的循环
121. for event in $game_map.events.values
122. # 事件坐标与目标一致的情况下
123. if event.areas.include?(new_point) and
124. triggers.include?(event.trigger)
125. # 跳跃中以外的情况下、启动判定是正面的事件
126. if not event.jumping? and not event.over_trigger?
127. event.start
128. result = true
129. end
130. end
131. end
132. end
133. end
134. return result
135. end
|
|