Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   _xscale & _yscale - от центра? (http://www.flasher.ru/forum/showthread.php?t=95458)

Killer_13 06.05.2007 18:07

_xscale & _yscale - от центра?
 
Есть у меня маленькие превьюшки и вот по такому коду они у меня работают:
Код:

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/r...ttons/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
Извините, - больше не повторится... :)

Повторилось. Поэтому плюс.

Killer_13 06.05.2007 21:14

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


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

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