| изменить 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
 |  |  |  |  |