Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.12.2010, 10:01
A.E.M. вне форума Посмотреть профиль Отправить личное сообщение для A.E.M. Найти все сообщения от A.E.M.
  № 1  
Ответить с цитированием
A.E.M.
 
Аватар для A.E.M.

Регистрация: Jun 2007
Сообщений: 61
Отправить сообщение для A.E.M. с помощью ICQ
Question Объясните, пожалуйста, почему в коде не работает shiftKey, выдается ошибка?

Здравствуйте!

Объясните пожалуйста почему в этом коде не работает shiftKey, выдается ошибка

"Access of possibly undefined property shiftKey through a reference with static type flash.events:Event", как это исправить? Спасибо.

Код AS3:
package {
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends MovieClip{
 
		private var _mouseIsDown:Boolean;
		private var _erasing:Boolean;
 
		private var _canvas:Sprite;
 
		private var _w:Number;
		private var _h:Number;
 
		private var _bmd:BitmapData;
		private var _bm:Bitmap;
 
		private var _brush:Sprite;
		private var _eraser:Sprite;
 
 
 
		public function Main (){
 
			_canvas = new Sprite();
			addChild(_canvas);
 
			_w = stage.stageWidth;
			_h = stage.stageHeight;
 
			_bmd = new BitmapData(_w, _h, false, 0xFFFFFFFF);
			_bm = new Bitmap(_bmd);
			_canvas.addChild(_bm);
 
			_brush = createBrush(0x000099);
			_eraser = createBrush(0xFFFFFF);
 
			_canvas.addEventListener(MouseEvent.MOUSE_DOWN, onDown, false, 0, true);
			_canvas.addEventListener(MouseEvent.MOUSE_UP, onUp, false, 0, true);
			this.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
 
		}
 
 
		private function createBrush(col:uint):Sprite{
 
			var sp:Sprite = new Sprite();
			sp.graphics.beginFill(col,1);
			sp.graphics.drawCircle(0,0,20);
			sp.graphics.endFill();
			return sp;
 
 
		}
 
		private function onDown(evt:Event):void{
 
			_mouseIsDown = true;
 
			if(evt.shiftKey){
				_erasing = true;
			}
		}
 
		private function onUp(evt:Event):void{
			_mouseIsDown = false;
			_erasing = false;
		}
 
		private function onLoop(evt:Event):void{
			if(_mouseIsDown && _erasing){
				_eraser.x = mouseX;
				_eraser.y = mouseY;
				_bmd.draw(_eraser, _eraser.transform.matrix);
			} else if(_mouseIsDown) {
				_brush.x = mouseX;
				_brush.y = mouseY;
				_bmd.draw(_brush, _brush.transform.matrix);
			}
		}
	}
}
__________________
Да будет ФЛЭШ !

Старый 02.12.2010, 10:06
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 2  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
у Event нет свойства shiftKey, оно есть у KeyboardEvent

Старый 02.12.2010, 10:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS3:
private function onDown(evt:MouseEvent):void{

Старый 02.12.2010, 10:09
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 4  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
только вы его не получите, пока не подпишетесь на KeyboardEvent.KEY_DOWN
А вообще - вот

Старый 02.12.2010, 10:17
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от Партизан Посмотреть сообщение
только вы его не получите, пока не подпишетесь на KeyboardEvent.KEY_DOWN
А вообще - вот
Свойство, в данном случае, показывает был ли нажат шифт во время нажатия мыши.

Старый 02.12.2010, 10:32
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 6  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от udaaff Посмотреть сообщение
Свойство, в данном случае, показывает был ли нажат шифт во время нажатия мыши.
Упс, точно, забыл про него

Старый 02.12.2010, 10:51
A.E.M. вне форума Посмотреть профиль Отправить личное сообщение для A.E.M. Найти все сообщения от A.E.M.
  № 7  
Ответить с цитированием
A.E.M.
 
Аватар для A.E.M.

Регистрация: Jun 2007
Сообщений: 61
Отправить сообщение для A.E.M. с помощью ICQ
а если разместить просто в первом кадре такой код :

Код AS3:
var mouseIsDown:Boolean;
var erasing:Boolean;
 
var canvas:Sprite = new Sprite();
addChild(canvas);
 
var w:Number = stage.stageWidth;
var h:Number = stage.stageHeight;
var bmd:BitmapData = new BitmapData(w, h, true, 0x000000);
var bm:Bitmap = new Bitmap(bmd);
canvas.addChild(bm);
trace(canvas.width, canvas.height);
 
var brush:Sprite = createBrush(0x000099);
var eraser:Sprite = createBrush(0xFFFFFF);
 
function createBrush(col:uint):Sprite {
	var sp:Sprite = new Sprite();
	sp.graphics.beginFill(col, 1);
	sp.graphics.drawCircle(0, 0, 20);
	sp.graphics.endFill();
	return sp;
}
 
canvas.addEventListener(MouseEvent.MOUSE_UP, onUp, false, 0, true);
canvas.addEventListener(MouseEvent.MOUSE_DOWN, onDown, false, 0, true);
canvas.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
 
function onUp(evt:MouseEvent):void {
	mouseIsDown = false;
	erasing = false;
}
 
function onDown(evt:MouseEvent):void {
	mouseIsDown = true;
	if (evt.shiftKey) {
		erasing = true;
	}
}
 
function onLoop(evt:Event):void {
	if (mouseIsDown && erasing) {
		eraser.x = mouseX;
		eraser.y = mouseY;
		bmd.draw(eraser, eraser.transform.matrix);
	} else if (mouseIsDown) {	
		brush.x = mouseX;
		brush.y = mouseY;
	trace(eraser.transform.matrix);
		bmd.draw(brush, brush.transform.matrix);
	}
}
то работает.


Так как исправить то? Я так и не понял.
__________________
Да будет ФЛЭШ !


Последний раз редактировалось A.E.M.; 02.12.2010 в 10:54.
Старый 02.12.2010, 14:55
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 8  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от A.E.M. Посмотреть сообщение
а если разместить просто в первом кадре такой код :

Код AS3:
var mouseIsDown:Boolean;
var erasing:Boolean;
 
var canvas:Sprite = new Sprite();
addChild(canvas);
 
var w:Number = stage.stageWidth;
var h:Number = stage.stageHeight;
var bmd:BitmapData = new BitmapData(w, h, true, 0x000000);
var bm:Bitmap = new Bitmap(bmd);
canvas.addChild(bm);
trace(canvas.width, canvas.height);
 
var brush:Sprite = createBrush(0x000099);
var eraser:Sprite = createBrush(0xFFFFFF);
 
function createBrush(col:uint):Sprite {
	var sp:Sprite = new Sprite();
	sp.graphics.beginFill(col, 1);
	sp.graphics.drawCircle(0, 0, 20);
	sp.graphics.endFill();
	return sp;
}
 
canvas.addEventListener(MouseEvent.MOUSE_UP, onUp, false, 0, true);
canvas.addEventListener(MouseEvent.MOUSE_DOWN, onDown, false, 0, true);
canvas.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
 
function onUp(evt:MouseEvent):void { // здесь код правильный (MouseEvent)
	mouseIsDown = false;
	erasing = false;
}
 
function onDown(evt:MouseEvent):void { // здесь код правильный (MouseEvent)
	mouseIsDown = true;
	if (evt.shiftKey) {
		erasing = true;
	}
}
 
function onLoop(evt:Event):void {
	if (mouseIsDown && erasing) {
		eraser.x = mouseX;
		eraser.y = mouseY;
		bmd.draw(eraser, eraser.transform.matrix);
	} else if (mouseIsDown) {	
		brush.x = mouseX;
		brush.y = mouseY;
	trace(eraser.transform.matrix);
		bmd.draw(brush, brush.transform.matrix);
	}
}
то работает.


Так как исправить то? Я так и не понял.
В первом вашем посте код не правильный

Старый 02.12.2010, 16:05
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 9  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Ага, вот так:

Код AS3:
private function onDown(evt:MouseEvent):void {
Причём во втором варианте ты и сам всё исправил...

Старый 03.12.2010, 11:21
A.E.M. вне форума Посмотреть профиль Отправить личное сообщение для A.E.M. Найти все сообщения от A.E.M.
  № 10  
Ответить с цитированием
A.E.M.
 
Аватар для A.E.M.

Регистрация: Jun 2007
Сообщений: 61
Отправить сообщение для A.E.M. с помощью ICQ
Спасибо!
__________________
Да будет ФЛЭШ !

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:21.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
shiftKey

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:21.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.