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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.02.2011, 00:54
alexniks вне форума Посмотреть профиль Отправить личное сообщение для alexniks Найти все сообщения от alexniks
  № 11  
Ответить с цитированием
alexniks

Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
создай спрайт mc1 и расположи его в нужной точке (точка А допустим). Положи в mc1 объект, который надо увеличивать (допустим mc2).
Увеличивай или уменьшай mc1, а не mc2. При этом начальная координата mc1 будет являться тем местом на экране, куда как бы увеличивается или уменьшается объект. А чтобы поменять центр увеличения или уменьшения у самого объекта передвигай mc2.

Вроде всё просто, а объяснить тяжело

Старый 28.02.2011, 00:57
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 12  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,282
Цитата:
Если вы сами ее измените, или если это окружность... К чему это замечание?
Почему ты считаешь что расположение точки регистрации как-то зависит от того какая форма у содержимого мувика? Точка регистрации может находиться где угодно не зависимо от того окружность это или нет.
Цитата:
Да, не знаем мы где эта точка, она будет выбрана пользователем. Я не баннер делаю , какие пропертис?
попробую еще раз: панель пропертис нужна чтоб ты узнал какая именно точка в ЛОКАЛЬНОЙ системе координат твоего мувика не должна смещаться. Это можно сделать и на глаз, но во flash ide сделать все-таки удобнее/точнее.

UPD: сорри, перечитал последний пост. Если неподвижная точка не известна сразу то можно её получить когда юзер кликнет по мувику. Надо только пересчитать координаты клика. Делается конечно без панели пропертиес, но с помощью тех-же методов localToGlobal и globalToLocal. Или как вариант можно взять mc.tansform.matrix у кликнутого мувика и умножить её на Point(mouseX,mouseY). По идеи результат должен быть одинаковым.


Последний раз редактировалось undefined; 28.02.2011 в 01:15.
Старый 28.02.2011, 01:18
alexniks вне форума Посмотреть профиль Отправить личное сообщение для alexniks Найти все сообщения от alexniks
  № 13  
Ответить с цитированием
alexniks

Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
Ааа....догнал, что ты хочешь.
Вот простой пример просмотра изображений в винде. Здесь только увеличение, уменьшение по тому же принципу.

Код AS3:
var scale:Number = 1;
 
mc1.mc2.addEventListener(MouseEvent.CLICK,clickevent);
 
function clickevent(e:MouseEvent):void{
	scale += 0.2;
	mc1.scaleX = mc1.scaleY = scale;
	mc1.mc2.x = -mc1.mc2.mouseX;
	mc1.mc2.y = -mc1.mc2.mouseY;
}


Последний раз редактировалось alexniks; 28.02.2011 в 01:28.
Старый 28.02.2011, 01:28
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 14  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Цитата:
Сообщение от alexniks Посмотреть сообщение
создай спрайт mc1 и расположи его в нужной точке (точка А допустим)....
Нет. "Хрен редьки не слаще" . Сейчас я расчитываю смещение мувика относительно сцены, а в вашем варианте, мне нужно будет расчитывать смещение мувика относительно спрайта.

Старый 28.02.2011, 02:14
alexniks вне форума Посмотреть профиль Отправить личное сообщение для alexniks Найти все сообщения от alexniks
  № 15  
Ответить с цитированием
alexniks

Регистрация: Feb 2011
Адрес: тут и там
Сообщений: 7
тогда используй матрицу

Код AS3:
import flash.geom.Matrix;
import flash.geom.Transform;
 
var scale:Number = 1;
 
mc1.addEventListener(MouseEvent.CLICK,clickevent);
 
function clickevent(e:MouseEvent):void{
	scale += 0.2;
	var mat:Matrix = new Matrix();
	mat.scale(scale,scale);
	mat.translate(-mc1.mouseX * scale +stage.stageWidth/2,-mc1.mouseY * scale + stage.stageHeight/2);
	mc1.transform.matrix = mat;
}
или пример без матрицы

Код AS3:
var scale:Number = 1;
 
mc1.addEventListener(MouseEvent.CLICK,clickevent);
 
function clickevent(e:MouseEvent):void{
	scale += 0.2;
	mc1.x = -mc1.mouseX * scale +stage.stageWidth/2;
	mc1.y = -mc1.mouseY * scale + stage.stageHeight/2;
	mc1.scaleX = mc1.scaleY = scale;
}


Последний раз редактировалось alexniks; 28.02.2011 в 02:26.
Старый 28.02.2011, 03:07
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 16  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Цитата:
Сообщение от alexniks Посмотреть сообщение
...
Не подходит. Работает также как и мой алгоритм с центробежным смещением сцены...

Добавлено через 23 минуты
Спасибо всем! Так я и не поборол эту штуку! Но нашёл костыль... Работает как надо.

Добавлено через 4 часа 1 минуту
Дошло до меня. Растягиваем и смещаем мувик. Это мы учитываем. Не учитываем то, что изображение в нем тоже растягивается а значит точка растет и смещается к центру. Здесь надо подбирать каэффициент этого растяжения. Не стал, так как, как уже писал, решил через костыль.

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

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

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


 


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


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