![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Добрый день.
Написал ф-цию: public function sliceNumbers(str:String):Array { var rArr:Array = []; rArr[0] = ""; rArr[1] = ""; var l:int = str.length; for (var i:int = 0; i < l; i += 2) { rArr[0] += str.charAt(i); } for (i = 1; i <= l; i += 2) { rArr[1] += str.charAt(i); } return rArr; } Теперь по задаче нужно разбить их ещё раз, снова на 2 кучки и так пока не останеться по 1 символу. Ну, это к сути проблемы не относиться, когда я пытаюсь сделать вот это: Мне выдают Type Error. Скорее всего, это проблема того, что передаются не значения, а ссылки. Есть способ передать именно значения или выдрать их?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Запуск вашего кода у меня не приводит к возникновению описанной ошибки. А по теме топика можно предложить передавать в функцию переменную в которую будет помещаться результат ее работы.
|
|
|||||
|
Гм, действительно. Но если обрабатывать это в другой ф-ции, то:
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.text.TextField; import flash.events.MouseEvent; public class Main extends MovieClip { private var inputText:TextField = new TextField(); private var ok:Sprite = new Sprite(); public function Main():void { addChild(inputText); inputText.x = 200; inputText.y = 225; inputText.text = "32017496"; addChild(ok); ok.x = 200; ok.y = 300; ok.graphics.beginFill(0xFFFFFF * Math.random(), 1); ok.graphics.drawRect(0, 0, 50, 50); var okText:TextField = new TextField(); okText.x = 210; okText.y = 315; okText.text = "Ok! ;)"; okText.textColor = 0xFFFFFF * Math.random(); okText.selectable = false; okText.mouseEnabled = false; addChild(okText); ok.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(e:MouseEvent):void { var funcRes:Array = sliceNumbers(inputText.text); var iter:int = 0; var resultArray:Array=new Array(); resultArray.push(funcRes[0], funcRes[1]); resultArray.splice(0, 1); var temp:Array = new Array(); while (resultArray[0].length > 1){ if (iter++ > 15) { trace("Не судьба"); break; return; //мало ли, чтобы не ждать 15 сек } for (var i:int = 0; i < resultArray.length; i++) { funcRes = sliceNumbers(resultArray[i]); temp.push(funcRes[0], funcRes[1]); } resultArray.splice(0,1); //error! if (temp.length>0) temp.splice(0, temp.length); } } public function sliceNumbers(str:String):Array { var rArr:Array = []; rArr[0] = ""; rArr[1] = ""; var l:int = str.length; for (var i:int = 0; i < l; i += 2) { rArr[0] += str.charAt(i); } for (i = 1; i <= l; i += 2) { rArr[1] += str.charAt(i); } return rArr; } } }
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось Psycho Tiger; 29.11.2008 в 14:35. |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 65
|
У меня нету ошибки и в этом коде!
|
|
|||||
|
А на кнопку то нажать пробовал?
![]()
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
2iNils: да, но если перед входом в цикл len>1 - то из цикла мы уже никогда не выйдем, т.к. перемнную len мы не обновляем. Или она будет работать как ссылка обновляясь? О_о
UPD: эээ... заработало... что то я без идей. Можешь обьяснить, что это было?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 65
|
Я имел в виду что нету ошибки там где ты сказал. Exception валится на while.
Цитата:
Цитата:
|
|
|||||
|
Цитата:
Цитата:
Этот момент уже набирал на форуме без компиляции, а попробуй вот так? Что здесь не то?
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2008
Сообщений: 65
|
Да ничего... Цикл отработал. Что я должен был увидеть?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:44. |
|
|
« Предыдущая тема | Следующая тема » |
|
|