|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2016
Сообщений: 34
|
Проверка массива на повторные цифры и выделение их цветом
Я создал несколько квадратов и заполнил их цифрами из массива. Так же создал кнопки при щелчке на которых к переменной number будет присвоена цифра данной кнопки. Потом при щелчке на квадрате, автоматически в текстовое поле квадрата будет занесено значение переменой number. Делаю проверку на повтор цифр если цифры повторяются нужно их перекрасить в красный цвет и значению horizontal_count прибавить единицу. Проблема заключается в том, что если ставить цифру после повторяющей то предыдущая цифра перекрашивается. Если за повторяющейся, то перекрашивается та которую только, что поставил. Как сделать так, чтобы ту которую поставил вообще не перекрашивалась, а цветом выделялись только похожие цифры.
Вот мой код: test_arr.rar import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFormat; var tl:Object = {}; var tf:Object = {}; var arr = [0,2,0,4,5,6,0,8,0]; //Цифра для проверки var number = 0; var horizontal_count = 0; //Создание тайлов function createTile() { for(var i = 0; i < 9; i++) { var name = "t_"+i; tl[name] = new tile(); tf[name] = new TextField(); addChild(tl[name]); tl[name].addChild(tf[name]); tl[name].x = 150+i * 25; tl[name].y = 150; tl[name].idi = i; tf[name].x = -12.5; tf[name].y = -12.5; tl[name].gotoAndStop(1); if(arr[i]!=0) { tf["t_"+i].text = arr[i]; } tl[name].addEventListener(MouseEvent.CLICK,onClick); } btn1.txt.text = "1"; btn2.txt.text = "2"; btn3.txt.text = "3"; btn4.txt.text = "4"; btn5.txt.text = "5"; btn6.txt.text = "6"; btn7.txt.text = "7"; btn8.txt.text = "8"; btn9.txt.text = "9"; btn1.addEventListener(MouseEvent.CLICK, onNum1Click); btn2.addEventListener(MouseEvent.CLICK, onNum2Click); btn3.addEventListener(MouseEvent.CLICK, onNum3Click); btn4.addEventListener(MouseEvent.CLICK, onNum4Click); btn5.addEventListener(MouseEvent.CLICK, onNum5Click); btn6.addEventListener(MouseEvent.CLICK, onNum6Click); btn7.addEventListener(MouseEvent.CLICK, onNum7Click); btn8.addEventListener(MouseEvent.CLICK, onNum8Click); btn9.addEventListener(MouseEvent.CLICK, onNum9Click); } function onNum1Click(e:Event) { number = 1; } function onNum2Click(e:Event) { number = 2; } function onNum3Click(e:Event) { number = 3; } function onNum4Click(e:Event) { number = 4; } function onNum5Click(e:Event) { number = 5; } function onNum6Click(e:Event) { number = 6; } function onNum7Click(e:Event) { number = 7; } function onNum8Click(e:Event) { number = 8; } function onNum9Click(e:Event) { number = 9; } function onClick(e:Event) { var bool = true; var clicked_btn:MovieClip = e.currentTarget as MovieClip; if(arr[clicked_btn.idi]==0) { tf["t_"+clicked_btn.idi].text = number; } horizontal_count = 0; for(var i = 0; i < 9-1; i++) { for(var j = i+1; j < 9; j++) { var tfNameFormat2:TextFormat = new TextFormat(); if(tf["t_"+i].text == tf["t_"+j].text) { if(tf["t_"+i].text!="") { horizontal_count++; } var name2 = "t_"+i; tfNameFormat2.color = 0xFF0000; tf[name2].setTextFormat(tfNameFormat2) } } } trace(horizontal_count); } createTile(); |
|
|||||
Так надо?
import flash.display.MovieClip; import flash.text.TextField; import flash.text.TextFormat; var tl:MovieClip; var tf:TextField; var arr:Array=[0,2,0,4,5,6,0,8,0]; var arrTL:Array=[]; var number=0; var horizontal_count:int=0; function createTile() { for (var i = 0; i < 9; i++) { tl = new tile(); tf = new TextField(); tl.x=150+i*25; tl.y=150; tl.idi=i; tf.x=-12.5; tf.y=-12.5; tf.height = 20; tl.gotoAndStop(1); if (arr[i]!=0) { tf.text=arr[i]; } tl.buttonMode = true; tl.addEventListener(MouseEvent.CLICK,onClick); tl.mouseChildren=false; tl.addChild(tf); addChild(tl); arrTL.push(tl); this["btn"+(i+1)].txt.text=String(i+1); this["btn"+(i+1)].mouseChildren=false; this["btn"+(i+1)].addEventListener(MouseEvent.CLICK, onNum1Click); } } function onNum1Click(e:Event) { number=int(e.target.txt.text); } function onClick(e:Event) { var i:int; horizontal_count=0; var tfNameFormat2:TextFormat = new TextFormat(); tfNameFormat2.color=0xFF0000; for (i = 0; i < 9; i++) { if (arrTL[i].getChildAt(1).text==String(number)) { arrTL[i].getChildAt(1).setTextFormat(tfNameFormat2); horizontal_count++; } } e.target.getChildAt(1).text=String(number); //trace(horizontal_count); } createTile(); Последний раз редактировалось Жень Шень; 23.07.2018 в 19:20. Причина: Нарушилось форматирование текста |
|
|||||
Регистрация: Mar 2016
Сообщений: 34
|
Да, то что нужно, вот ещё вопрос, у меня например два сектора по 9 клеток в каждом как мне найти одинаковые цифры при щелчке мыши в первом секторе (тот который выделится цветом). Вот код (его достаточно скопировать в первый фрейм который я разместил выше), он у меня ищет все одинаковые цифры в двух секторах.
import flash.events.Event; var arr = [0,3,3,2,7,5,8,2,1,0,2,4,1,5,7,8,1,9]; var tl:Object = {}; var tf:Object = {}; var number = 5; function createTile() { for(var i = 0; i < 18; i++) { var name = "t_"+i; tl[name] = new tile(); tf[name] = new TextField(); addChild(tl[name]); tl[name].x = 150+25*(i%3); tl[name].y = 150+25*int((i/3)); tl[name].addChild(tf[name]); tl[name].gotoAndStop(1); if(arr[i]!=0) { tf[name].text = arr[i]; } tf[name].x = -12.5; tf[name].y = -12.5; tl[name].addEventListener(MouseEvent.CLICK,checkNum); } } function checkNum(e:Event) { var clicked_btn:MovieClip = e.currentTarget as MovieClip; for(var i = 0; i < arr.length; i++) { for(var j = i+1; j < arr.length; j++) { var tfNameFormat3:TextFormat = new TextFormat(); var position = {x1:Math.floor(i/2)}; var position2 = {x1:Math.floor(j/2)}; tl["t_"+position.x1].gotoAndStop(2); if(tf["t_"+position.x1].text==tf["t_"+position2.x1].text) { tfNameFormat3.color = 0xFF0000; tf["t_"+i].setTextFormat(tfNameFormat3); } } } } createTile(); |
|
|||||
а расскажите мне пожалуйста в чем смысл подобного?
__________________
местонахождение |
|
|||||
Регистрация: Mar 2016
Сообщений: 34
|
Позиция высчитывается, так как мне нужно только первые девять клеток, то массив из 18 элементов делим на двое. То же самое, делаем второй раз с переменной j, чтобы потом сравнивать.
|
|
|||||
а просто завести переменную x для хранения результата это слишком просто?
__________________
местонахождение |
Часовой пояс GMT +4, время: 20:41. |
|
« Предыдущая тема | Следующая тема » |
|
|