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

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

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

Регистрация: May 2015
Сообщений: 1
По умолчанию помещение объекта в контейнер

Проблема состоит в том, что при помещение контейнера r1 в контейнер r, контейнер r1 начинает двигаться вместе с r, но на некотором расстоянии. Как сделать так, чтобы при помещение r1 в r, квадрат оставался на том месте куда мы с помощью мыши помещаем квадрат.
Имеется код:
Код AS3:
package
{
    import flash.display.*;
	import flash.events.*;
	import flash.events.MouseEvent;
	import flash.text.*;
	import flash.geom.Point;
 
 
 
	public class pr extends Sprite
	{
		private var r:Sprite;
		private var r1:Sprite;
		private var offsetX:Number;
		private	var offsetY:Number;
 
		public function pr  () {
 
 
 
		    r = new Sprite();
			r.graphics.beginFill(0xff0000);
			r.graphics.lineStyle(3);
			r.graphics.drawRect(0,0,60,100);
			r.x=200;
			r.y=200;
			addChild(r);
 
			r1 = new Sprite();
			r1.graphics.beginFill(0x0000ff);
			r1.graphics.lineStyle(3);
			r1.graphics.drawRect(0,0,20,20);
			r1.x=100;
			r1.y=200;
 
 
 
			addChild(r1);
 
			r1. addEventListener(MouseEvent.MOUSE_DOWN, downH);
			r1.addEventListener(MouseEvent.MOUSE_UP, upH);
			addEventListener(Event.ENTER_FRAME, moveLine);
 
		}
 
 
		 public function downH (e:MouseEvent):void {
 
			 r1.startDrag();
			 trace("кнопка мыши нажата");
 
 
		    }
 
 
		 public function upH (e:MouseEvent):void {
			  r1.stopDrag();
			  trace("кнопка мыши отпущена");
 
 
			  if (r1.x>=r.x && r1.x<=r.x+r.width && r1.y>=r.y && r1.y<=r.y+r.height  ) {
					 trace("совпадают");
 
                     r.addChild(r1);
 
 
			  } 
		 }
 
 
		public function moveLine(e:Event):void{
 
			r.x +=1;
			}
 
 
 
}
}


Последний раз редактировалось dimarik; 15.05.2015 в 12:33. Причина: Теги нужно расставлять. На первый раз я сделал это сам.
Старый 15.05.2015, 11:17
callme вне форума Посмотреть профиль Отправить личное сообщение для callme Найти все сообщения от callme
  № 2  
Ответить с цитированием
callme
 
Аватар для callme

Регистрация: Dec 2014
Сообщений: 312
Код не проверял, но мне кажется как-то так надо делать.

Код AS3:
var point1:Point = r1.localToGlobal(0, 0);
var point2:Point = r.globalToLocal(point1.x, point1.y);
r1.x = point2.x;
r1.y = point2.y;
http://help.adobe.com/ru_RU/FlashPla...ToGlobal%28%29

http://help.adobe.com/ru_RU/FlashPla...lToLocal%28%29

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

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

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


 


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


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