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

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

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

Регистрация: Jun 2010
Сообщений: 65
По умолчанию Центр трансформации MovieClip программно

Добрый вечер коллеги!
Вопрос в следующем: как в программно создаваемом MovieClip'е
Код AS1/AS2:
_root.createEmptyMovieClip("MC", _root.getNextHighestDepth);
установить центр(точку) трансформации.
Заранее спасибо!

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

Регистрация: Feb 2008
Сообщений: 560
Создать вспомогательный клип, в нем создать ваш "MC", сдвинуть "MC" в соответвтующие координаты, например _x = "минус половина ширины" и _y = "минус половина высоты" и вращать вспомогательный клип. Вроде так.

Старый 24.02.2011, 15:05
Prometei1599 вне форума Посмотреть профиль Отправить личное сообщение для Prometei1599 Найти все сообщения от Prometei1599
  № 3  
Ответить с цитированием
Prometei1599

Регистрация: Jun 2010
Сообщений: 65
Добрый день!
В вспомогательном MovieClip разместил точку регистрации в центре. Загрузил изображение в целевой MovieClip, задав ему координаты _x и _y половине ширины и высоты, и разместил его в вспомогательном MC.
Итог можно увидеть во вложении.

Вопрос: что я не так сделал?=(
Вложения
Тип файла: rar Center.rar (180.3 Кб, 49 просмотров)

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

Регистрация: Feb 2008
Сообщений: 560
Могу открыть только формат CS3. Если я правильно понимаю, вам надо сделать следующее:
1) создать клип в текущем месте - _root.createEmptyMovieClip
2) создать клип внутри созданного - _root["preloadClip_0"].createEmptyMovieClip
3) загрузить картинку в клип из пункта 2
4) сдвинуть клип из пункта 2, он сдвинется относительно клипа из пункта 1
5) вращать клип из пункта 1

Вот упрощенный код:
Код AS1/AS2:
var newClip = _root.createEmptyMovieClip("preloadClip_0", _root.getNextHighestDepth());
var newClip2 = newClip.createEmptyMovieClip("preloadClip_1", newClip.getNextHighestDepth());
 
 
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
 
listener.onLoadInit = function(target_mc):Void{
        target_mc._x = -target_mc._width/2;
        target_mc._y = -target_mc._height/2;
}
 
mcl.loadClip("mno0.jpg", newClip2);
 
newClip._x = Stage.width / 2;
newClip._y = Stage.height / 2;
newClip._rotation = 45;

Старый 24.02.2011, 20:01
Prometei1599 вне форума Посмотреть профиль Отправить личное сообщение для Prometei1599 Найти все сообщения от Prometei1599
  № 5  
Ответить с цитированием
Prometei1599

Регистрация: Jun 2010
Сообщений: 65
Почти так. Немного уточню, может что-то упустил:
Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.Matrix;
 
var mtrx = new Matrix();
mtrx.scale(1.0, 1.0);
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
 
listener.onLoadInit = function(target_mc):Void{
	var bmd = new BitmapData(187, 187, true, 0x00000000);
	bmd.draw(target_mc, mtrx, null, "normal", null, true);
	mc.attachBitmap(bmd, d2, "auto", true);
 
	target_mc._x = -target_mc._width/2;
	target_mc._y = -target_mc._height/2;
 
	mc.onPress = function(){
		this._xscale +=10;
		this._yscale +=10;
	}
 
	removeMovieClip(target_mc);
}
 
var newClip = _root.createEmptyMovieClip("preloadClip_0", _root.getNextHighestDepth());
mcl.loadClip("images/mno0.jpg", newClip);
Где mc-уже готовый MovieClip с точкой регистрации в геометрическом центре(он же вспомогательный MC)


Последний раз редактировалось Prometei1599; 24.02.2011 в 20:06.
Старый 24.02.2011, 20:26
rainbowrussia вне форума Посмотреть профиль Отправить личное сообщение для rainbowrussia Найти все сообщения от rainbowrussia
  № 6  
Ответить с цитированием
rainbowrussia
 
Аватар для rainbowrussia

Регистрация: Feb 2008
Сообщений: 560
Я не совсем "догоняю" что у вас происходит - вы создаете в корне клип, в него грузите картинку, отрисовываете картинку в другой клип, затем зачем-то двигаете загруженный клип и сразу его удаляете.
Сохраните свой исходник с формате CS3, я вечером посмотрю что у вас там такое.

Старый 24.02.2011, 20:59
Prometei1599 вне форума Посмотреть профиль Отправить личное сообщение для Prometei1599 Найти все сообщения от Prometei1599
  № 7  
Ответить с цитированием
Prometei1599

Регистрация: Jun 2010
Сообщений: 65
Прошу прощения. Накрутил лишнего в этот код...
Задача в том, чтобы загрузить изображение, отрисовать ее в целевой MovieClip. А затем разместить целевой MovieClip во вспомогательный, таким образом, чтобы масштабирование производилось от геометрического центра.

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

Регистрация: Jun 2010
Сообщений: 65
Добрый день!
Вопрос решен и тему можно закрывать!)
Если кому интересно, вот код:
Код AS1/AS2:
import flash.display.BitmapData;
import flash.geom.Matrix;
 
var mtrx = new Matrix();
mtrx.scale(1.0, 1.0);
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
 
listener.onLoadInit = function(target_mc):Void{	
	var bmd = new BitmapData(187, 187, true, 0x00000000);
	bmd.draw(target_mc, mtrx, null, "normal", null, true);
	mc.attachBitmap(bmd, d2, "auto", true);
	mc._x = -mc._width/2;
	mc._y = -mc._height/2;
}
 
mainMC.onPress = function(){
		mainMC._rotation +=45;
	}
 
var mc = mainMC.createEmptyMovieClip("innerMC", mainMC.getNextHighestDepth());
var preloadClip = mc.createEmptyMovieClip("preloadClip", mc.getNextHighestDepth());
mcl.loadClip("images/mno0.jpg", preloadClip);
Где mainMC готовый MovieClip, mc - вспомогательный и preloadCLip - для загрузки и отрисовки изображения.
Отдельное спасибо rainbow!)

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

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

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


 


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


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