PDA

Просмотр полной версии : _xscale & _yscale - от центра?


Killer_13
06.05.2007, 18:07
Есть у меня маленькие превьюшки и вот по такому коду они у меня работают:currentThumb.onRollOver = currentThumb.onDragOver = function(){
currentThumb._xscale += 40;
currentThumb._yscale += 40;
}

currentThumb.onRollOut = currentThumb.onDragOut = function(){
currentThumb._xscale -= 40;
currentThumb._yscale -= 40;
}
Как сделать, чтоб они увеличивались постепенно (плвно)?
И как сделать, чтоб увелечение шло не от левого верхнего угла, а от центра?

iNils
06.05.2007, 18:10
1. Воспользоваться классом Tween
2. Сместить содержимое клипа на половину ширины и высоты вверх и влево.

Killer_13
06.05.2007, 18:33
1. - вы когда то подсказали мне клас Tween на альфу
import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (this, "_alpha", None.easeNone, 100, 0, 0.3, true);
Так этот клас работает и с _xscale & _yscale. Но когда я его вставляю в обработчик события "onRollOver" мне выкидивает ошибку.
2. Имеется введу при "onRollOver" смещение самого мувика по "x & y"- наполовину?

iNils
06.05.2007, 18:51
1а. Этот класс работает с любыми цифровыми свойствами объекта, в том числе и созданных вами.
1б. Какую ошибку и как вы вставили в обработчик.
2. Нет, зайти в клип и сдвинуть. Потом сдвинуть сам клип в обратную сторону. Можно также повесить событие onMotionChanged и делать перерасчеты, то это используется при динамической точки вращения.

Killer_13
06.05.2007, 18:59
1
currentThumb.onRollOver = currentThumb.onDragOver = function(){

import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (this, "_xscale","_yscale", None.easeNone, 0, 40, 0.3, true);
//currentThumb._xscale += 40;
//currentThumb._yscale += 40;
}

ошибки:
**Error** Scene=Scene 1, layer=actions, frame=1:Line 129: Syntax error.
import mx.transitions.Tween;

**Error** Scene=Scene 1, layer=actions, frame=1:Line 130: Syntax error.
import mx.transitions.easing.None;

Total ActionScript Errors: 2 Reported Errors: 2

Я чуствую оч глупие ошибки.. :(

iNils
06.05.2007, 19:12
Нужно зайти в настройки публикации и поменять версию AS c 1 на 2.

Killer_13
06.05.2007, 19:13
Это я так наглядно, - а если полностью, - то код выглядит - вот так:
currentThumb.onRollOver = currentThumb.onDragOver = function(){
import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (currentThumb, "_xscale","_yscale", None.easeNone, 0, 40, 0.3, true);
}
currentThumb.onRollOut = currentThumb.onDragOut = function(){
import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (currentThumb, "_xscale","_yscale", None.easeNone, 40, 0, 0.3, true);
}

iNils
06.05.2007, 19:21
Такая конструкция работать не будет.
new Tween (currentThumb, "_xscale","_yscale", None.easeNone, 0, 40, 0.3, true);
Читайте в хелпе параметры конструктора и не делайте отсебятину.

Killer_13
06.05.2007, 19:27
Поменял, - тепер скрипт запускается только в таком варианте: Причём увеличение не происходит - работает без увеличения - тоисть что с этим кодом, что без него... :(
currentThumb.onRollOver = currentThumb.onDragOver = function()
{
import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (currentThumb, "_xscale","_yscale", None.easeNone, 0, 40, 0.3, true);
showName_txt.text = this.NAME;
}
сurrentThumb.onRollOut = currentThumb.onDragOut = function()
{

showName_txt.text = "";
}
а в таком варианте он не запускается - выкидывает ошибку...

currentThumb.onRollOver = currentThumb.onDragOver = function()
{
import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (currentThumb, "_xscale","_yscale", None.easeNone, 0, 40, 0.3, true);
showName_txt.text = this.NAME;
}
сurrentThumb.onRollOut = currentThumb.onDragOut = function()
{
import mx.transitions.Tween;
import mx.transitions.easing.None;
var tween:Tween = new Tween (currentThumb, "_xscale","_yscale", None.easeNone, 40, 0, 0.3, true);
showName_txt.text = this.NAME;
showName_txt.text = "";
}

Ошибка:
**Error** Scene=Scene 1, layer=actions, frame=1:Line 145: The class 'mx.transitions.Tween' cannot be imported because its leaf name is already being resolved to imported class 'mx.transitions.Tween'.
import mx.transitions.Tween;

**Error** Scene=Scene 1, layer=actions, frame=1:Line 146: The class 'mx.transitions.easing.None' cannot be imported because its leaf name is already being resolved to imported class 'mx.transitions.easing.None'.
import mx.transitions.easing.None;

Total ActionScript Errors: 2 Reported Errors: 2

lowka
06.05.2007, 19:30
Не нужно одни и те же классы два раза импортировать.

Killer_13
06.05.2007, 19:35
:( - тогда закиньте код кто может... - а то я весь форум облазил, - но не нашёл..:(
А насчёт конструктора - я это всё понимаю, - но програмирование для меня тёмный лес.. - уже много раз брался "понять" - но..:( не получается..

iNils
06.05.2007, 19:40
import mx.transitions.Tween;
import mx.transitions.easing.None;
currentThumb.onRollOver = currentThumb.onDragOver = function () {
this.tweenX.stop ();
this.tweenY.stop ();
this.tweenX = new Tween (this, "_xscale", None.easeNone, this._xscale, 40, 0.3, true);
this.tweenY = new Tween (this, "_yscale", None.easeNone, this._yscale, 40, 0.3, true);
showName_txt.text = this.NAME;
};
currentThumb.onRollOut = currentThumb.onDragOut = function () {
this.tweenX.stop ();
this.tweenY.stop ();
this.tweenX = new Tween (this, "_xscale", None.easeNone, this._xscale, 0, 0.3, true);
this.tweenY = new Tween (this, "_yscale", None.easeNone, this._yscale, 0, 0.3, true);
showName_txt.text = this.NAME;
showName_txt.text = "";
};
Только не понятно, у вас при onRollOut, объет визуально исчезнет и onRollOver вы для него не сделаете.

Killer_13
06.05.2007, 19:42
Не импортирую 2 раза клас - запускается, - но анимация при таком коде производится циклически... - "зацикливается", - и почему то применяется только к останней картинке..? :(
Может кто поделится кодом? Или исправит мой? - буду благодарен...

"Только не понятно, у вас при onRollOut, объет визуально исчезнет и onRollOver вы для него не сделаете."

Так и сделал - картинки испарились..:(
Как же тогда сделать такую штуку? :(

iNils
06.05.2007, 19:47
import mx.transitions.Tween;
import mx.transitions.easing.None;
currentThumb.onRollOver = currentThumb.onDragOver = function () {
this.tweenX.stop ();
this.tweenY.stop ();
this.tweenX = new Tween (this, "_xscale", None.easeNone, this._xscale, 140, 0.3, true);
this.tweenY = new Tween (this, "_yscale", None.easeNone, this._yscale, 140, 0.3, true);
showName_txt.text = this.NAME;
};
currentThumb.onRollOut = currentThumb.onDragOut = function () {
this.tweenX.stop ();
this.tweenY.stop ();
this.tweenX = new Tween (this, "_xscale", None.easeNone, this._xscale, 100, 0.3, true);
this.tweenY = new Tween (this, "_yscale", None.easeNone, this._yscale, 100, 0.3, true);
showName_txt.text = this.NAME;
showName_txt.text = "";
};

Killer_13
06.05.2007, 19:50
Супер!!!!!!!!!!!!!!!
СПАСИБО!!!!!!
А тогда чтоб увеличение делалось от центра, - я что то не понял...

Если вас не затруднит - как это выглядит на практике? :)

iNils
06.05.2007, 19:53
1. Если я еще раз увижу у вас два сообщения подряд, поставлю плюс. Пользуйтесь кнопкой http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif
2. Повторю еще раз. Зайти в клип и сместить его содержимое.

Killer_13
06.05.2007, 20:02
Извините, - больше не повторится... :)

? - а если клип у меня создается динамически? Как в него зайти?

currentThumb = menu_mc.createEmptyMovieClip("thumbnail"+child,child);

iNils
06.05.2007, 20:57
Извините, - больше не повторится... :)Повторилось. Поэтому плюс.

Killer_13
06.05.2007, 21:14
???? - а что значит "+"?
Я ж не флудил! Я просто спросил, - а вдруг кто-то даст ответ...
Я не понимаю...
Просто хочу понять! Может кто то будет иметь желание и обьяснит мне...