PDA

Просмотр полной версии : Странное поведение enterFrameHandler


Nikirozzz
06.10.2013, 05:47
Всем привет.
Есть такой код
private function enterFrameHandler(event:Event):void {


if (omniLight.intensity==ran) ran= Math.round(Math.random()*1/ .01) * .01;
if (omniLight.intensity<ran) omniLight.intensity+=0.01;
if (omniLight.intensity>ran) omniLight.intensity-=0.01;

Math.round(omniLight.intensity/ .01)* .01;
trace ("omni "+omniLight.intensity);
trace ("ran "+ran);
trace("-----");}

и выдает он

omni 0.61
ran 0.75
-----
omni 0.62
ran 0.75
-----
omni 0.63
ran 0.75
-----
omni 0.64
ran 0.75
-----
omni 0.65
ran 0.75
-----
omni 0.66
ran 0.75
-----
omni 0.67
ran 0.75
-----
omni 0.68
ran 0.75
-----
omni 0.6900000000000001
ran 0.75
-----
omni 0.7000000000000001
ran 0.75
-----
omni 0.7100000000000001
ran 0.75
-----
omni 0.7200000000000001
ran 0.75
-----
omni 0.7300000000000001
ran 0.75
-----
omni 0.7400000000000001
ran 0.75
-----
omni 0.7400000000000001
ran 0.75
-----
omni 0.7400000000000001
ran 0.75
-----

т.е по началу все идет хорошо но затем округление перестает работать и все стопориться. В чем может быть проблема?

Wolsh
06.10.2013, 11:14
А где Вы увидели округление? Вот это округляет только при соблюдении условия и только часть выражения в процессе рассчетов.
if (omniLight.intensity==ran) ran= Math.round(Math.random()*1/ .01) * .01;
А эта запись
Math.round(omniLight.intensity/ .01)* .01; за горизонтом событий, простите. Даже если компилятор ее оставляет в коде (хотя зачем бы ему?) — это вычисления "в уме", ибо их результат не используется НИГДЕ. Он просто абсолютно никуда не сохраняется.

Nikirozzz
06.10.2013, 12:05
Спасибо, разобрался
omniLight.intensity=Math.round(omniLight.intensity/ .01)* .01;
if (omniLight.intensity==ran) ran= Math.round(Math.random()*1/ .01) * .01;
if (omniLight.intensity<ran) omniLight.intensity+=0.01;
if (omniLight.intensity>ran) omniLight.intensity-=0.01;

Все-таки кодить до 5 утра плохая практика.

Nikirozzz
06.10.2013, 13:07
А нет. всеравно ошибка. просто теперь она дольше не проявляется.
omniLight.intensity=Math.round(omniLight.intensity/ .01)* .01;
if (omniLight.intensity===ran) ran= Math.round(Math.random()*1/ .01) * .01;
if (omniLight.intensity<ran) omniLight.intensity+=0.01;
if (omniLight.intensity>ran) omniLight.intensity-=0.01;



omni 0.59
ran 0.55
-----
omni 0.58
ran 0.55
-----
omni 0.57
ran 0.55
-----
omni 0.56
ran 0.55
-----
omni 0.55
ran 0.55
-----
omni 0.56
ran 0.91
-----
omni 0.5700000000000001
ran 0.91
-----
omni 0.5800000000000001
ran 0.91
-----
omni 0.59
ran 0.91
-----
omni 0.6
ran 0.91
-----
omni 0.61
ran 0.91
-----
omni 0.62
ran 0.91
-----
omni 0.63
ran 0.91
-----
omni 0.64
ran 0.91
-----
omni 0.65
ran 0.91
-----
omni 0.66
ran 0.91
-----
omni 0.67
ran 0.91
-----
omni 0.68
ran 0.91
-----
omni 0.6900000000000001
ran 0.91
-----
omni 0.7000000000000001
ran 0.91
-----
omni 0.7100000000000001
ran 0.91
-----
omni 0.72
ran 0.91
-----
omni 0.73
ran 0.91
-----
omni 0.74
ran 0.91
-----
omni 0.75
ran 0.91
-----
omni 0.76
ran 0.91
-----
omni 0.77
ran 0.91
-----
omni 0.78
ran 0.91
-----
omni 0.79
ran 0.91
-----
omni 0.8
ran 0.91
-----
omni 0.81
ran 0.91
-----
omni 0.8200000000000001
ran 0.91
-----
omni 0.8300000000000001
ran 0.91
-----
omni 0.8400000000000001
ran 0.91
-----
omni 0.85
ran 0.91
-----
omni 0.86
ran 0.91
-----
omni 0.87
ran 0.91
-----
omni 0.88
ran 0.91
-----
omni 0.89
ran 0.91
-----
omni 0.9
ran 0.91
-----
omni 0.91
ran 0.91
-----
omni 0.9
ran 0.13
-----
omni 0.89
ran 0.13
-----
omni 0.88
ran 0.13
-----
omni 0.87
ran 0.13
-----
omni 0.86
ran 0.13
-----
omni 0.85
ran 0.13
-----
omni 0.84
ran 0.13
-----
omni 0.83
ran 0.13
-----
omni 0.8200000000000001
ran 0.13
-----
omni 0.81
ran 0.13
-----
omni 0.8
ran 0.13
-----
omni 0.79
ran 0.13
-----
omni 0.78
ran 0.13
-----
omni 0.77
ran 0.13
-----
omni 0.76
ran 0.13
-----
omni 0.75
ran 0.13
-----
omni 0.74
ran 0.13
-----
omni 0.73
ran 0.13
-----
omni 0.72
ran 0.13
-----
omni 0.71
ran 0.13
-----
omni 0.7
ran 0.13
-----
omni 0.6900000000000001
ran 0.13
-----
omni 0.68
ran 0.13
-----
omni 0.67
ran 0.13
-----
omni 0.66
ran 0.13
-----
omni 0.65
ran 0.13
-----
omni 0.64
ran 0.13
-----
omni 0.63
ran 0.13
-----
omni 0.62
ran 0.13
-----
omni 0.61
ran 0.13
-----
omni 0.6
ran 0.13
-----
omni 0.59
ran 0.13
-----
omni 0.58
ran 0.13
-----
omni 0.57
ran 0.13
-----
omni 0.56
ran 0.13
-----
omni 0.55
ran 0.13
-----
omni 0.54
ran 0.13
-----
omni 0.53
ran 0.13
-----
omni 0.52
ran 0.13
-----
omni 0.51
ran 0.13
-----
omni 0.5
ran 0.13
-----
omni 0.49
ran 0.13
-----
omni 0.48
ran 0.13
-----
omni 0.47
ran 0.13
-----
omni 0.46
ran 0.13
-----
omni 0.45
ran 0.13
-----
omni 0.44
ran 0.13
-----
omni 0.43
ran 0.13
-----
omni 0.42
ran 0.13
-----
omni 0.41
ran 0.13
-----
omni 0.4
ran 0.13
-----
omni 0.39
ran 0.13
-----
omni 0.38
ran 0.13
-----
omni 0.37
ran 0.13
-----
omni 0.36
ran 0.13
-----
omni 0.35
ran 0.13
-----
omni 0.34
ran 0.13
-----
omni 0.33
ran 0.13
-----
omni 0.32
ran 0.13
-----
omni 0.31
ran 0.13
-----
omni 0.3
ran 0.13
-----
omni 0.29
ran 0.13
-----
omni 0.27999999999999997
ran 0.13
-----
omni 0.27
ran 0.13
-----
omni 0.26
ran 0.13
-----
omni 0.25
ran 0.13
-----
omni 0.24
ran 0.13
-----
omni 0.22999999999999998
ran 0.13
-----
omni 0.22
ran 0.13
-----
omni 0.21
ran 0.13
-----
omni 0.19999999999999998
ran 0.13
-----
omni 0.19
ran 0.13
-----
omni 0.18
ran 0.13
-----
omni 0.16999999999999998
ran 0.13
-----
omni 0.16
ran 0.13
-----
omni 0.15
ran 0.13
-----
omni 0.13999999999999999
ran 0.13
-----
omni 0.13
ran 0.13
-----
omni 0.14
ran 0.92
-----
omni 0.15000000000000002
ran 0.92
-----
omni 0.16
ran 0.92
-----
omni 0.17
ran 0.92
-----
omni 0.18000000000000002
ran 0.92
-----
omni 0.19
ran 0.92
-----
omni 0.2
ran 0.92
-----
omni 0.21000000000000002
ran 0.92
-----
omni 0.22
ran 0.92
-----
omni 0.23
ran 0.92
-----
omni 0.24000000000000002
ran 0.92
-----
omni 0.25
ran 0.92
-----
omni 0.26
ran 0.92
-----
omni 0.27
ran 0.92
-----
omni 0.28
ran 0.92
-----
omni 0.29000000000000004
ran 0.92
-----
omni 0.3
ran 0.92
-----
omni 0.31
ran 0.92
-----
omni 0.32
ran 0.92
-----
omni 0.33
ran 0.92
-----
omni 0.34
ran 0.92
-----
omni 0.35000000000000003
ran 0.92
-----
omni 0.36000000000000004
ran 0.92
-----
omni 0.37
ran 0.92
-----
omni 0.38
ran 0.92
-----
omni 0.39
ran 0.92
-----
omni 0.4
ran 0.92
-----
omni 0.41000000000000003
ran 0.92
-----
omni 0.42000000000000004
ran 0.92
-----
omni 0.43
ran 0.92
-----
omni 0.44
ran 0.92
-----
omni 0.45
ran 0.92
-----
omni 0.46
ran 0.92
-----
omni 0.47000000000000003
ran 0.92
-----
omni 0.48000000000000004
ran 0.92
-----
omni 0.49
ran 0.92
-----
omni 0.5
ran 0.92
-----
omni 0.51
ran 0.92
-----
omni 0.52
ran 0.92
-----
omni 0.53
ran 0.92
-----
omni 0.54
ran 0.92
-----
omni 0.55
ran 0.92
-----
omni 0.56
ran 0.92
-----
omni 0.5700000000000001
ran 0.92
-----
omni 0.5800000000000001
ran 0.92
-----
omni 0.59
ran 0.92
-----
omni 0.6
ran 0.92
-----
omni 0.61
ran 0.92
-----
omni 0.62
ran 0.92
-----
omni 0.63
ran 0.92
-----
omni 0.64
ran 0.92
-----
omni 0.65
ran 0.92
-----
omni 0.66
ran 0.92
-----
omni 0.67
ran 0.92
-----
omni 0.68
ran 0.92
-----
omni 0.6900000000000001
ran 0.92
-----
omni 0.7000000000000001
ran 0.92
-----
omni 0.7100000000000001
ran 0.92
-----
omni 0.72
ran 0.92
-----
omni 0.73
ran 0.92
-----
omni 0.74
ran 0.92
-----
omni 0.75
ran 0.92
-----
omni 0.76
ran 0.92
-----
omni 0.77
ran 0.92
-----
omni 0.78
ran 0.92
-----
omni 0.79
ran 0.92
-----
omni 0.8
ran 0.92
-----
omni 0.81
ran 0.92
-----
omni 0.8200000000000001
ran 0.92
-----
omni 0.8300000000000001
ran 0.92
-----
omni 0.8400000000000001
ran 0.92
-----
omni 0.85
ran 0.92
-----
omni 0.86
ran 0.92
-----
omni 0.87
ran 0.92
-----
omni 0.88
ran 0.92
-----
omni 0.89
ran 0.92
-----
omni 0.9
ran 0.92
-----
omni 0.91
ran 0.92
-----
omni 0.92
ran 0.92
-----
omni 0.91
ran 0.2
-----
omni 0.9
ran 0.2
-----
omni 0.89
ran 0.2
-----
omni 0.88
ran 0.2
-----
omni 0.87
ran 0.2
-----
omni 0.86
ran 0.2
-----
omni 0.85
ran 0.2
-----
omni 0.84
ran 0.2
-----
omni 0.83
ran 0.2
-----
omni 0.8200000000000001
ran 0.2
-----
omni 0.81
ran 0.2
-----
omni 0.8
ran 0.2
-----
omni 0.79
ran 0.2
-----
omni 0.78
ran 0.2
-----
omni 0.77
ran 0.2
-----
omni 0.76
ran 0.2
-----
omni 0.75
ran 0.2
-----
omni 0.74
ran 0.2
-----
omni 0.73
ran 0.2
-----
omni 0.72
ran 0.2
-----
omni 0.71
ran 0.2
-----
omni 0.7
ran 0.2
-----
omni 0.6900000000000001
ran 0.2
-----
omni 0.68
ran 0.2
-----
omni 0.67
ran 0.2
-----
omni 0.66
ran 0.2
-----
omni 0.65
ran 0.2
-----
omni 0.64
ran 0.2
-----
omni 0.63
ran 0.2
-----
omni 0.62
ran 0.2
-----
omni 0.61
ran 0.2
-----
omni 0.6
ran 0.2
-----
omni 0.59
ran 0.2
-----
omni 0.58
ran 0.2
-----
omni 0.57
ran 0.2
-----
omni 0.56
ran 0.2
-----
omni 0.55
ran 0.2
-----
omni 0.54
ran 0.2
-----
omni 0.53
ran 0.2
-----
omni 0.52
ran 0.2
-----
omni 0.51
ran 0.2
-----
omni 0.5
ran 0.2
-----
omni 0.49
ran 0.2
-----
omni 0.48
ran 0.2
-----
omni 0.47
ran 0.2
-----
omni 0.46
ran 0.2
-----
omni 0.45
ran 0.2
-----
omni 0.44
ran 0.2
-----
omni 0.43
ran 0.2
-----
omni 0.42
ran 0.2
-----
omni 0.41
ran 0.2
-----
omni 0.4
ran 0.2
-----
omni 0.39
ran 0.2
-----
omni 0.38
ran 0.2
-----
omni 0.37
ran 0.2
-----
omni 0.36
ran 0.2
-----
omni 0.35
ran 0.2
-----
omni 0.34
ran 0.2
-----
omni 0.33
ran 0.2
-----
omni 0.32
ran 0.2
-----
omni 0.31
ran 0.2
-----
omni 0.3
ran 0.2
-----
omni 0.29
ran 0.2
-----
omni 0.27999999999999997
ran 0.2
-----
omni 0.27
ran 0.2
-----
omni 0.26
ran 0.2
-----
omni 0.25
ran 0.2
-----
omni 0.24
ran 0.2
-----
omni 0.22999999999999998
ran 0.2
-----
omni 0.22
ran 0.2
-----
omni 0.21
ran 0.2
-----
omni 0.19999999999999998
ran 0.2
-----
omni 0.21000000000000002
ran 0.22
-----
omni 0.22
ran 0.22
-----
omni 0.23
ran 0.43
-----
omni 0.24000000000000002
ran 0.43
-----
omni 0.25
ran 0.43
-----
omni 0.26
ran 0.43
-----
omni 0.27
ran 0.43
-----
omni 0.28
ran 0.43
-----
omni 0.29000000000000004
ran 0.43
-----
omni 0.3
ran 0.43
-----
omni 0.31
ran 0.43
-----
omni 0.32
ran 0.43
-----
omni 0.33
ran 0.43
-----
omni 0.34
ran 0.43
-----
omni 0.35000000000000003
ran 0.43
-----
omni 0.36000000000000004
ran 0.43
-----
omni 0.37
ran 0.43
-----
omni 0.38
ran 0.43
-----
omni 0.39
ran 0.43
-----
omni 0.4
ran 0.43
-----
omni 0.41000000000000003
ran 0.43
-----
omni 0.42000000000000004
ran 0.43
-----
omni 0.43
ran 0.43
-----
omni 0.42
ran 0.37
-----
omni 0.41
ran 0.37
-----
omni 0.4
ran 0.37
-----
omni 0.39
ran 0.37
-----
omni 0.38
ran 0.37
-----
omni 0.37
ran 0.37
-----
omni 0.36
ran 0.02
-----
omni 0.35
ran 0.02
-----
omni 0.34
ran 0.02
-----
omni 0.33
ran 0.02
-----
omni 0.32
ran 0.02
-----
omni 0.31
ran 0.02
-----
omni 0.3
ran 0.02
-----
omni 0.29
ran 0.02
-----
omni 0.27999999999999997
ran 0.02
-----
omni 0.27
ran 0.02
-----
omni 0.26
ran 0.02
-----
omni 0.25
ran 0.02
-----
omni 0.24
ran 0.02
-----
omni 0.22999999999999998
ran 0.02
-----
omni 0.22
ran 0.02
-----
omni 0.21
ran 0.02
-----
omni 0.19999999999999998
ran 0.02
-----
omni 0.19
ran 0.02
-----
omni 0.18
ran 0.02
-----
omni 0.16999999999999998
ran 0.02
-----
omni 0.16
ran 0.02
-----
omni 0.15
ran 0.02
-----
omni 0.13999999999999999
ran 0.02
-----
omni 0.13
ran 0.02
-----
omni 0.12000000000000001
ran 0.02
-----
omni 0.11
ran 0.02
-----
omni 0.1
ran 0.02
-----
omni 0.09000000000000001
ran 0.02
-----
omni 0.08
ran 0.02
-----
omni 0.07
ran 0.02
-----
omni 0.060000000000000005
ran 0.02
-----
omni 0.049999999999999996
ran 0.02
-----
omni 0.04
ran 0.02
-----
omni 0.03
ran 0.02
-----
omni 0.019999999999999997
ran 0.02
-----
omni 0.03
ran 0.54
-----
omni 0.04
ran 0.54
-----
omni 0.05
ran 0.54
-----
omni 0.060000000000000005
ran 0.54
-----
omni 0.06999999999999999
ran 0.54
-----
omni 0.08
ran 0.54
-----
omni 0.09
ran 0.54
-----
omni 0.09999999999999999
ran 0.54
-----
omni 0.11
ran 0.54
-----
omni 0.12
ran 0.54
-----
omni 0.13
ran 0.54
-----
omni 0.14
ran 0.54
-----
omni 0.15000000000000002
ran 0.54
-----
omni 0.16
ran 0.54
-----
omni 0.17
ran 0.54
-----
omni 0.18000000000000002
ran 0.54
-----
omni 0.19
ran 0.54
-----
omni 0.2
ran 0.54
-----
omni 0.21000000000000002
ran 0.54
-----
omni 0.22
ran 0.54
-----
omni 0.23
ran 0.54
-----
omni 0.24000000000000002
ran 0.54
-----
omni 0.25
ran 0.54
-----
omni 0.26
ran 0.54
-----
omni 0.27
ran 0.54
-----
omni 0.28
ran 0.54
-----
omni 0.29000000000000004
ran 0.54
-----
omni 0.3
ran 0.54
-----
omni 0.31
ran 0.54
-----
omni 0.32
ran 0.54
-----
omni 0.33
ran 0.54
-----
omni 0.34
ran 0.54
-----
omni 0.35000000000000003
ran 0.54
-----
omni 0.36000000000000004
ran 0.54
-----
omni 0.37
ran 0.54
-----
omni 0.38
ran 0.54
-----
omni 0.39
ran 0.54
-----
omni 0.4
ran 0.54
-----
omni 0.41000000000000003
ran 0.54
-----
omni 0.42000000000000004
ran 0.54
-----
omni 0.43
ran 0.54
-----
omni 0.44
ran 0.54
-----
omni 0.45
ran 0.54
-----
omni 0.46
ran 0.54
-----
omni 0.47000000000000003
ran 0.54
-----
omni 0.48000000000000004
ran 0.54
-----
omni 0.49
ran 0.54
-----
omni 0.5
ran 0.54
-----
omni 0.51
ran 0.54
-----
omni 0.52
ran 0.54
-----
omni 0.53
ran 0.54
-----
omni 0.54
ran 0.54
-----
omni 0.53
ran 0.12
-----
omni 0.52
ran 0.12
-----
omni 0.51
ran 0.12
-----
omni 0.5
ran 0.12
-----
omni 0.49
ran 0.12
-----
omni 0.48
ran 0.12
-----
omni 0.47
ran 0.12
-----
omni 0.46
ran 0.12
-----
omni 0.45
ran 0.12
-----
omni 0.44
ran 0.12
-----
omni 0.43
ran 0.12
-----
omni 0.42
ran 0.12
-----
omni 0.41
ran 0.12
-----
omni 0.4
ran 0.12
-----
omni 0.39
ran 0.12
-----
omni 0.38
ran 0.12
-----
omni 0.37
ran 0.12
-----
omni 0.36
ran 0.12
-----
omni 0.35
ran 0.12
-----
omni 0.34
ran 0.12
-----
omni 0.33
ran 0.12
-----
omni 0.32
ran 0.12
-----
omni 0.31
ran 0.12
-----
omni 0.3
ran 0.12
-----
omni 0.29
ran 0.12
-----
omni 0.27999999999999997
ran 0.12
-----
omni 0.27
ran 0.12
-----
omni 0.26
ran 0.12
-----
omni 0.25
ran 0.12
-----
omni 0.24
ran 0.12
-----
omni 0.22999999999999998
ran 0.12
-----
omni 0.22
ran 0.12
-----
omni 0.21
ran 0.12
-----
omni 0.19999999999999998
ran 0.12
-----
omni 0.19
ran 0.12
-----
omni 0.18
ran 0.12
-----
omni 0.16999999999999998
ran 0.12
-----
omni 0.16
ran 0.12
-----
omni 0.15
ran 0.12
-----
omni 0.13999999999999999
ran 0.12
-----
omni 0.13
ran 0.12
-----
omni 0.12000000000000001
ran 0.12
-----
omni 0.13
ran 0.58
-----
omni 0.14
ran 0.58
-----
omni 0.15000000000000002
ran 0.58
-----
omni 0.16
ran 0.58
-----
omni 0.17
ran 0.58
-----
omni 0.18000000000000002
ran 0.58
-----
omni 0.19
ran 0.58
-----
omni 0.2
ran 0.58
-----
omni 0.21000000000000002
ran 0.58
-----
omni 0.22
ran 0.58
-----
omni 0.23
ran 0.58
-----
omni 0.24000000000000002
ran 0.58
-----
omni 0.25
ran 0.58
-----
omni 0.26
ran 0.58
-----
omni 0.27
ran 0.58
-----
omni 0.28
ran 0.58
-----
omni 0.29000000000000004
ran 0.58
-----
omni 0.3
ran 0.58
-----
omni 0.31
ran 0.58
-----
omni 0.32
ran 0.58
-----
omni 0.33
ran 0.58
-----
omni 0.34
ran 0.58
-----
omni 0.35000000000000003
ran 0.58
-----
omni 0.36000000000000004
ran 0.58
-----
omni 0.37
ran 0.58
-----
omni 0.38
ran 0.58
-----
omni 0.39
ran 0.58
-----
omni 0.4
ran 0.58
-----
omni 0.41000000000000003
ran 0.58
-----
omni 0.42000000000000004
ran 0.58
-----
omni 0.43
ran 0.58
-----
omni 0.44
ran 0.58
-----
omni 0.45
ran 0.58
-----
omni 0.46
ran 0.58
-----
omni 0.47000000000000003
ran 0.58
-----
omni 0.48000000000000004
ran 0.58
-----
omni 0.49
ran 0.58
-----
omni 0.5
ran 0.58
-----
omni 0.51
ran 0.58
-----
omni 0.52
ran 0.58
-----
omni 0.53
ran 0.58
-----
omni 0.54
ran 0.58
-----
omni 0.55
ran 0.58
-----
omni 0.56
ran 0.58
-----
omni 0.5700000000000001
ran 0.58
-----
omni 0.5700000000000001
ran 0.58
-----
omni 0.5700000000000001
ran 0.58
-----
omni 0.5700000000000001
ran 0.58
-----
omni 0.5700000000000001
ran 0.58
-----
omni 0.5700000000000001
ran 0.58

Wolsh
06.10.2013, 13:22
Особенности вычислений с плавающей точкой. Вам это мешает? Используйте где можно целые числа (int, uint). У Number такая вот точность.
trace(57 * 0.01); // 0.5700000000000001
trace(57 / 100); // 0.57

Elff
06.10.2013, 15:18
Nikirozzz, а зачем умножать на единицу?
Math.random()*1

in4core
07.10.2013, 02:12
Elff - для верности :D

С точностью боремся toFixed(2);