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

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

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

Регистрация: Sep 2012
Адрес: Россия
Сообщений: 30
По умолчанию Как изменить ось вращения изображения внутри спрайта?

Код AS1/AS2:
//Загружаю изображение
loadImg.load(new URLRequest(WayAnimImg));
 
//Создаю спрайт
var layerImg:Sprite = new Sprite ;
layerImg.height = 50;
layerImg.width = 50;
 
//Загружаю изображение в спрайт
layerImg.addChild(loadImg);
 
//Выравниваю изображение внутри спрайта
loadImg.y = 25;
loadImg.x = 25;
 
//Пытаюсь изменить ось вращения
loadImg.transform.matrix.translate(25,25);
 
//Анимирую изображение с помощью TweenLite
TweenLite.to(loadImg,1,{scaleX:1.3,scaleY:1.3,ease:Back.easeOut});
Собственно вопрос: как переместить ось вращения изображения внутри спрайта в центр изображения? Изначально ось находится в верхнем левом углу. И при анимации увеличения изображения анимируемое изображение смещается относительно цента спрайта, что не есть гуд. Подскажите в каком направлении капать, Гугл не очень помог..

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

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Обёртку сделать.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 13.09.2012, 21:17
CyberGenius вне форума Посмотреть профиль Отправить личное сообщение для CyberGenius Найти все сообщения от CyberGenius
  № 3  
Ответить с цитированием
CyberGenius
 
Аватар для CyberGenius

Регистрация: Sep 2012
Адрес: Россия
Сообщений: 30
То есть? Добавить спрайт в еще один спрайт? Если не сложно, ты бы не мог написать небольшой пример?

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

блогер
Регистрация: Sep 2009
Сообщений: 309
Записей в блоге: 4
Отправить сообщение для AzagThoth с помощью ICQ
Спрайт в который грузите картинку можно вложить в пустой родительский спрайт. И позиционировать его внутри родительского спрайта, как удобно. Крутить же сам родительский спрайт. Пример могу на AS2 написать. AS3 учу и пишу на нём пока очень медленно и плохо.
__________________
Играй. Это жизнь.
Всё повторяется. Играй.

Старый 13.09.2012, 21:53
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
пример на ас3
Код AS3:
var mainSprite:Sprite = new Sprite();
var innerSprite:Sprite = new Sprite();
mainSprite.addChild(innerSprite);
image.x -= image.width / 2; // центрируем изображение внутри вложенного спрайта
image.y -= image.height / 2;
innerSprite.addChild(image);
addChild(mainSprite);
TweenLite.to(innerSprite,1,{scaleX:1.3,scaleY:1.3,ease:Back.easeOut});
Хотя здесь можно вообще обойтись только внутренним спрайтом.

п.с. Завадать ширину и высоту пустому спрайту бессмысленно. Это ничего не даст. Так как его ширина и высота меняются с помощью масштабирования относительно ширины контента. А пока контента внутри нет, его ширина и высота равны нулю, поэтому какие бы параметры не задавались, при умножении на ноль они так же превратятся в ноль.

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Думаю, подобрать нужные параметры - не проблема.
Код AS3:
var _matrix:Matrix = _youObject.transform.matrix;
MatrixTransformer.rotateAroundExternalPoint(_matrix, 25, 25, 45);
_youObject.transform.matrix = _matrix;
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 13.09.2012, 22:56
CyberGenius вне форума Посмотреть профиль Отправить личное сообщение для CyberGenius Найти все сообщения от CyberGenius
  № 7  
Ответить с цитированием
CyberGenius
 
Аватар для CyberGenius

Регистрация: Sep 2012
Адрес: Россия
Сообщений: 30
TanaTiX, приведенный код не работает как нужно, параметры менял по разному...

Вот сделал картинку, надеюсь теперь будет понятно чего собственно я хочу..


Добавлено через 12 минут
Хотя скорее лучше всего переместить точку относительно которой изменяется второй спрайт, а не точку у изображения в него загруженного...

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
caseyryan дал правильный пример, только innerSprite в центр пихнуть и ок.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 14.09.2012, 03:10
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 9  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
http://www.flasher.ru/forum/blog.php?b=378

Старый 14.09.2012, 04:42
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 10  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
есть вариант проще, если спрайт будет отрисовываться через graphics:
вот пример:
Код AS3:
var spr:Sprite = new Sprite();
spr.graphics.beginfill(0);
spr.graphics.moveTo(-50,-50);
spr.graphics.lineTo(-50,50);
spr.graphics.lineTo(50,50);
spr.graphics.lineTo(-50,50);
spr.graphics.endfill();
addChild(spr);
spr.x = 200;
spr.y = 200;
spr = addEventListener(MouseEvent.CLICK,onClickSpr);
function onClickSpr(e:MouseEvent = null){
    spr.rotation+=10;
}
короче нарисовать центр спрайта в нуле координат

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

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

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


 


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


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