全球FlexSim系统仿真中文论坛

标题: 如何获取Activity的统计信息? [打印本页]

作者: zorsite    时间: 2022-11-29 15:17
标题: 如何获取Activity的统计信息?
本帖最后由 zorsite 于 2022-11-29 15:42 编辑
% v8 O0 A$ B. f) F# W$ y" Q
3 t$ e& P# _' [1 ^如何获取Activity的统计信息?9 s, Y2 q. c* F; s! d+ k
3D实体的属性面板中可以查看统计信息。8 `/ k" ~& r9 w- z
[attach]6028[/attach]) V# K' _8 e0 x* F
同时可以通过Object.stats属性来获取相关信息。1 n( T  P+ t9 N; L+ X/ X
[attach]6029[/attach]
' ^; E2 _: i" x0 v, f" O5 VActivity也有属性面板
' U" H. x! M5 Q" V$ T2 f5 B[attach]6030[/attach]
5 S  [% I& c0 x* {& c1 O但是Activity却没有stats属性,无法通过属性获取统计信息。$ q  x2 U1 ^, @" w* e) V9 P$ q
[attach]6031[/attach]
' }8 U  B9 S0 K5 `原因在于当我们使用current关键字的时候,current被声明为Object对象,而activity被声明为treenode对象。
+ ]* O$ Y3 ]6 [$ u4 z* ltreenode作为Object的父类,其属性和方法不如其子类Object那样丰富。1 q  [2 n7 {' n! f* R
[attach]6032[/attach]
6 r: O0 \1 c; o. Q( T4 A  L作为treenode的子类,Object对象除了有treenode的属性外,还具有以下属性:0 _4 S$ z7 r3 |9 G$ s5 Z  z9 u
[attach]6033[/attach]
- h1 [1 ?4 L" }- W其中就有stats属性,可以获取统计信息。" N5 l) p' |; h1 x" d0 ]! C! I

) y8 L2 u- T+ I# _那如何使用代码获取Activity的统计信息呢?
2 }2 R3 k: f0 f( |0 W9 [" b! G/ V# m第1种方法,使用getstat命令。
# @" E# j6 R8 v, d4 t2 [getstat (node object, str name, int flag [, var p1, var p2, var p3])
* ]0 @6 ^& T7 kReturns the statistic value for the given objectDescription0 W4 ^1 b) l" w1 E6 }
It is preferred to use Object.stats instead. Gets the specified statistic from the given object.* R( s3 u& K0 a
Example:) }# L7 J* Y- z
  1. getstat(activity, "Content", STAT_CURRENT)
复制代码
  1. getstat(activity, "Input", STAT_CURRENT)
复制代码
  1. getstat(activity, "Staytime", STAT_AVERAGE)
复制代码
  1. double avgContent = getstat(
    , `: b9 g" {; ?$ `: h" d0 A
  2. // getstat requires between 4 and 6 parameters:6 d$ A5 z7 x/ y( s& T' J, t3 x
  3. activity, // 1. the object (shared asset or activity) that has the statistic: d( p% d# V/ x9 Q
  4. "Content", // 2. the name of the statistic
    % f( z) z& x5 K+ `  X5 T
  5. STAT_AVERAGE, // 3. the desired value from the statistic (could also be STAT_CURRENT, STAT_MIN, or STAT_MAX)  I& b! j1 m4 C/ P
  6. // 4. an optional parameter the instance object (usually current); s) z+ [+ S( w% _6 B) X4 M. _
  7. // 5. an additional parameter to help resolve which data to get% y* @6 t' w; p' f
  8. // 6. an additional parameter to help resolve which data to get3 j3 D' ^/ N$ d/ W9 O( r
  9. );
复制代码

. B: c3 v5 e: f第2种方法,转换activity的类型。
5 _3 a' h; X: c4 i0 {# A* z. g既然Object对象有stats属性,那把activity从treenode类型转换为Object类型不就可以了?. p  h' s8 _! u& R, j! R
转换的方式有2种:
' T+ K& j, y8 I) H7 c* o方法1,使用as关键字:
5 F' A% q# w+ j: u2 W
  1. activity.as(Object).stats.input.value;+ F/ |9 u, ~' Z, e/ o
复制代码
- G5 w9 S: s8 O0 W! l3 B
方法2,将activity声明为Object类型的变量:  _* R/ t8 s* q3 t0 v
  1. Object Obj_activity=activity;
    ! w9 ~9 p2 A3 T$ C, S' I. D5 j
  2. return Obj_activity.stats.input.value;
复制代码
. l; u" [- ?# [2 Y
9 E; [7 P5 V2 T% d: W* a/ J

7 T: ]! p) n8 x# k/ ?! O# l) b: E- d2 ?4 W1 Q( C

( h( C, k0 y, f. |) ?7 z% i6 f, C
0 ~3 a3 M/ j& z7 w4 q
( Z$ z2 f9 q7 k' ?( j2 M! m
4 p: }, I7 J# z5 B$ ]




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3