изменить linestyle по щелчку мыши
|
|
Vislouh | Дата: Пятница, 04 Февраля 2011, 19:44 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| есть какие то обьекты на сцене, нам нужно чтобы они по щелчку как то выделялись, например, у того обьекта покоторому я щелкну мышью,изменится его текущий Linestyle на linestyle (2,0xff0000) как правильно написать это,чтобы изменилось? public function videlenie(Event:MouseEvent):void { ////////вот как я пробовал this.cubic.graphics.lineStyle() = cubic.graphics.lineStyle(0xff0000); ////////////////еще один вариант this.cubic.graphics.lineStyle(2, 0xff0000) trace('работает')} но эт не работает,я не могу сформулировать правильно,чтобы дощло до компилятора что мне нужно.
новичок в изучении actionscript 3.0
|
|
| |
SoWa | Дата: Воскресенье, 06 Февраля 2011, 12:08 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Не, ты немного не так делаешь с самого начала Смотри. Чтобы линия знала, что тыкнули на нее - надо навешать на нее обработчик: Code var line:%type% = new %type%(); ... line.addEventListener(MouseEvent.CLICK,videlenie); this.addChild(line); И вот ты создал линию, навешал на нее слушателя, добавил на сцену. Теперь время отлавливать событие. В функции videlenie пиши такой код: Code (Event.currentTarget as %type%).lineStyle(2, 0xff0000); Где %type% - это тип переменной с которой работаешь. Возможно, (Event.currentTarget as %type%) такое приведение типа лишнее, но береженого бог бережет.Добавлено (06.02.2011, 12:08) --------------------------------------------- Т.е. смотри вообще логику работы с событиями объектов: Когда ты объект создал и навешал на него обработчик - он будет отрабатывать со событию на объекте. Если ты хочешь в этом обработчике ченить с делать с этим объектом - используй Event.currentTarget or Event.Target Для чего вообще были придуманы эти таргеты(цели)? Такой пример: у тебя есть 100 экземпляров кнопки. И все на сцене. Пусть это игра Сапер. Клик на каждую кнопку не нуждается в уникальном обработчике, ведь вся информация хранится где-то в массиве. Поэтому для всех 100 кнопок написан всего один обработчик, который с помощью Event.currentTarget узнает, на какую именно кнопку тыкнули. а потом ченить с ней делает.
ActionScript-программист. Так же Flash Media Server, C#, PHP. Рисовать не умею и не люблю. Ищу проект, желательно где есть грамотный менеджер, дизайнер и художник.
Сообщение отредактировал SoWa - Воскресенье, 06 Февраля 2011, 12:04 |
|
| |
Vislouh | Дата: Воскресенье, 06 Февраля 2011, 21:19 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| package game { import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.Sprite; import game.cvadrat; import flash.events.Event; import flash.events.MouseEvent; public class Cicl extends Sprite { public var cubic:cvadrat; public function Cicl() { for (var ctolbec:int=0; ctolbec<12;ctolbec++) { for (var rad:int=0; rad<12;rad++) { cubic = new cvadrat(); cubic.name = String(ctolbec) + String(rad); cubic.x = (cubic.x + cubic.width)*ctolbec; cubic.y = (cubic.y + cubic.height)*rad; addChild(cubic); cubic.addEventListener(MouseEvent.CLICK, this.videlenie); } } } private function videlenie(Event:MouseEvent):void { (Event.currentTarget as Graphics).beginFill( 0xff0000); trace("fff"); } } } ошибка. не удается вызвать обьект или свойство со ссылкой на обьект "null" то есть как это? он не находит почему то обьект для того чтобы его изменить но почему.
новичок в изучении actionscript 3.0
Сообщение отредактировал Vislouh - Воскресенье, 06 Февраля 2011, 21:50 |
|
| |
SoWa | Дата: Понедельник, 07 Февраля 2011, 08:51 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Поставь бряк на эту строку: (Event.currentTarget as Graphics).beginFill( 0xff0000); И посмотри, что за объект приходит в обработчик. Я вечером сам гляну, потыкаюсь. Можешь весь проект скинуть на мыло imtester@mail.ru ?
ActionScript-программист. Так же Flash Media Server, C#, PHP. Рисовать не умею и не люблю. Ищу проект, желательно где есть грамотный менеджер, дизайнер и художник.
|
|
| |
Vislouh | Дата: Вторник, 08 Февраля 2011, 15:01 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| в общем пришел к выводу что изменить свойства graphics через листенер невозможно. решил проблему тем что сделал отдельно обводку и по листенеру добавляю ее к уже имеющимся квадратикам. так работает, хотя и как по мне так неудобно. Добавлено (08.02.2011, 15:01) --------------------------------------------- SoWa,ты не смотрел еще код? я тебе отправил.в общем проблема еще и в том что мне нужно проверять на совпадение цветов.если цвет одного квадратика равен цвету другого квадратика то тогда то то и то то,а beginFill сравнить не представляется возможным
новичок в изучении actionscript 3.0
|
|
| |