![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 17
|
Есть код:
package { import flash.display.Sprite; import flash.events.Event; /** * ... * @author HraD */ public class Main extends Sprite { private var array1:Array = [0,0,0,0,100,0,200,0,145,0]; private var array2:Array = []; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var string1:String = array1.join(";"); trace("string1", string1); array2 = string1.split(";"); trace("array2", array2); var summa:int = 0; for (var i:int = 0; i < array2.length; i++) { summa += array2[i]; trace("Сумма:", summa, "array2[i] is Object", array2[i] is Object, "summa is int", summa is int); } } } } [Capturing traces with FDB] string1 0;0;0;0;100;0;200;0;145;0 array2 0,0,0,0,100,0,200,0,145,0 Сумма: 0 array2[i] is Object true summa is int true Сумма: 0 array2[i] is Object true summa is int true Сумма: 0 array2[i] is Object true summa is int true Сумма: 0 array2[i] is Object true summa is int true Сумма: 100 array2[i] is Object true summa is int true Сумма: 1000 array2[i] is Object true summa is int true Сумма: 1000200 array2[i] is Object true summa is int true Сумма: 10002000 array2[i] is Object true summa is int true Сумма: 1412065553 array2[i] is Object true summa is int true Сумма: 1235753642 array2[i] is Object true summa is int true |
|
|||||
|
Правильно:
Иначе флеш делает так: array2[i] - строка, значит мы хотим объеденить две строки в одну. Меняем тип сумма на String автоматом и соединяем. Затем идёт присваивание. Присваиваем числу значит пробуем перевести получившуюся строку в число. (строка 00000 переводится в 0)
__________________
if (love is true) break my.heart; |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
summa += array2[i]; это тоже самое, что и summa = summa + array2[i].
array2[i] содержит строки, соответственно результат вычисления правой части выражения будет строкой. Далее это строка преобразовывается в int. В двух последних итерациях int "обрезает" число до 32 разрядов. |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 17
|
Так и сделал в итоге. Всем спасибо, просто некоторые моменты типа
Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|