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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.12.2012, 11:50
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 1  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
По умолчанию startDrag и stopDrag

сразу скажу, что я недавно начал изучать классы, и столкнулся с проблемой.
вот код:
Код AS1/AS2:
package  {
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
 
   public class GUNS extends MovieClip {
 
      public function GUNS() 
      {
         this.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
         this.addEventListener(MouseEvent.MOUSE_UP, mUp);
      }
      public function mDown(e:MouseEvent):void
        {
           this.startDrag(true);
        }
      public function mUp(e:MouseEvent):void
        {
           this.stopDrag();
        }
   }
 
}
в этом коде я пытаюсь сделать так, чтоб объект, по зажиманию мыши следовал за ней, а по отпусканию мыши, объект остался в последних координатах, но при отпускании мыши объект все равно движется за мышкой.

мне посоветовали к mouse up дописать свойство stage, я дописал вот так:

Код AS3:
stage.addEventListener(MouseEvent.MOUSE_UP, mUp);
но выдает ошибку -

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at GUNS()
at Символ16()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()
at shop_and_battle_fla::MainTimeline()

помогите реализовать мою идею.

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Код AS3:
package  {
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
 
   public class GUNS extends MovieClip {
 
      public function GUNS() 
      {
         this.addEventListener(Event.ADDED_TO_STAGE, init);
      }
 
      public function init():void{
         this.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
         this.addEventListener(MouseEvent.MOUSE_UP, mUp);
      }
      public function mDown(e:MouseEvent):void
        {
           this.startDrag(true);
        }
      public function mUp(e:MouseEvent):void
        {
           this.stopDrag();
        }
   }
 
}
Пока объект не стоит на сцене у него stage=null

Старый 02.12.2012, 12:07
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 3  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
большое спасибо! а как сделать так чтоб, при отпускании мыши объект становился в исходные координаты?

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
В mDown запоминать координаты, а в mUp восстанавливать.

Старый 02.12.2012, 12:35
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 5  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
я немножко модернезировал свой код, и вот что получилось:

Код AS3:
package  {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	public class GUNS extends MovieClip {
 
		public function GUNS() 
		{
			var px:Number = new Number
			var py:Number = new Number
			px = this.x
			py = this.y
			trace (py, px)
			this.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
			this.addEventListener(MouseEvent.MOUSE_UP, mUp);
		}
		public function mDown(e:MouseEvent):void
        {
	        startDrag(false);
        }
		public function mUp(e:MouseEvent):void
        {
			this.x = px
			this.y = py
	        stopDrag();
        }
	}
 
}
но пишет ошибку:
строка 23 1120: Обращение несуществующего свойства px.
строка 23 1120: Обращение несуществующего свойства py.
что делать ? (напомню что с классами познакомился недавно)

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

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
Переменные объявленные в конструкторе будут видны только в нем. Для того, чтобы переменные можно было использовать по всему классу их необходимо объявить перед конструктором.
Код AS3:
public class GUNS extends MovieClip {
    private var px:Number;
    private var py:Number;

Старый 02.12.2012, 13:02
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 7  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
исправил, вот новые ошибки -

строка 9 1013: Атрибут "private" можно использовать для определений свойств класса.
строка 10 1013: Атрибут "private" можно использовать для определений свойств класса.
строка 1 5000: В класс "GUNS" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.

Старый 02.12.2012, 13:03
TWETTI вне форума Посмотреть профиль Отправить личное сообщение для TWETTI Найти все сообщения от TWETTI
  № 8  
Ответить с цитированием
TWETTI
 
Аватар для TWETTI

Регистрация: Dec 2007
Адрес: Россия, Москва
Сообщений: 541
Отправить сообщение для TWETTI с помощью Skype™
У вас так написано?
Код AS3:
package  {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	public class GUNS extends MovieClip {
 		private var px:Number;
		private var py:Number;
 
		public function GUNS() 
		{
			px = this.x
			py = this.y
			trace (py, px)
			this.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
			this.addEventListener(MouseEvent.MOUSE_UP, mUp);
		}
		public function mDown(e:MouseEvent):void
        	{
			startDrag(false);
        	}
		public function mUp(e:MouseEvent):void
		{
			this.x = px
			this.y = py
	       		stopDrag();
        	}
	}
 
}

Старый 02.12.2012, 13:25
XMON вне форума Посмотреть профиль Отправить личное сообщение для XMON Найти все сообщения от XMON
  № 9  
Ответить с цитированием
XMON
[+1 13.12.12]
[++1 13.12.12]

Регистрация: Aug 2012
Сообщений: 145
нет. Огромное вам спасибо!)

Добавлено через 2 часа 35 минут

а как можно проверять столкновение класса с другим или этим классом?


Последний раз редактировалось XMON; 02.12.2012 в 16:01.
Старый 03.12.2012, 09:53
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 10  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Можно так попробовать.
http://help.adobe.com/ru_RU/FlashPla...itTestObject()

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

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

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


 


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


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