Форум 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)
-   -   2-й параметр onMouseWheel - как правильно задать? (http://www.flasher.ru/forum/showthread.php?t=105349)

Жень Шень 13.12.2007 17:23

2-й параметр onMouseWheel - как правильно задать?
 
Привет!
Из хэлпа:
Код:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function (delta) {
  clip_mc._x += delta;
}
Mouse.addListener(mouseListener);

Как правильно задать второй параметр(function (delta, mymc_mc)), чтоб колесо срабатывало только находясь над клипом mymc_mc?
Да, и о типе параметра. В русском переводе (раздел Mouse.onMouseWheel переводил Антарес) говорится:
Цитата:

scrollTarget Необязательный параметр. Число, показывающее верхний мувиклип...
У Адобэ:
Цитата:

scrollTarget:String [optional] - A parameter that indicates the topmost movie...
Спасибо.

wvxvw 13.12.2007 21:16

Код:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function (delta) {
        trace(typeof(arguments[0])+" : "+typeof(arguments[1])); // Number : movieclip
        trace(arguments[0]+" : "+arguments[1]); // 3 : _level0.mc
        clip_mc._x += delta;
}
Mouse.addListener(mouseListener);


etc 14.12.2007 10:51

А написать function(delta, mc) нельзя?

Жень Шень 14.12.2007 11:25

Цитата:

Сообщение от __etc
А написать function(delta, mc) нельзя?

Конечно можно!!!
Да, прукручена уже проверка по хиттесту.
Но, я задал вопрос про стандартную функцию. Кстати еще ньюанс. В некоторых случаях дельта принимает значение 3, в других 10.
Сново слышу ответ: "Установи свою". Так и делаю.
Но, хотел понять ДАННУЮ до конца.
И понял:
Код:

var mc:MovieClip;// клип на котором работает колесо
var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta, mc) {
        if (mc) {
                clip_mc._x += delta;
        }
};
Mouse.addListener(mouseListener);


wvxvw 14.12.2007 12:54

Код:

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function (delta, mc) {
        ASSetPropFlags(_global,null,8,true);
        for(var i in _global){
                if(mc instanceof _global[i]){
                        trace("The second argument belongs to the "+i+" type");
                }
        }
}
Mouse.addListener(mouseListener);

Кстати... я не знаю откуда взялось предположение, что второй аргумент - строка... Ну никак - только Object или MovieClip %)

etc 14.12.2007 13:18

3 или 9 (10 не бывает) — зависит ровным счетом от настроек системы.

Жень Шень 14.12.2007 13:52

Цитата:

Сообщение от wvxvw
Кстати... я не знаю откуда взялось предположение, что второй аргумент - строка... Ну никак - только Object или MovieClip %)

Привет!
Смутило "scrollTarget:String [optional]" и очень поверхностное знание английского. Спасибо тебе, что напомнил про проверку (typeof). Это и разрешило "проблему": теперь я так понимаю - параметр, это строка, дающая ссылку на число (уровень клипа). Я пробывал раньше писать вторым параметром _level0.mc или число (уровень клипа mc), что вызывало ошибку.

wvxvw 14.12.2007 14:13

Цитата:

GalaxyBeing said on Feb 2, 2006 at 4:23 PM :
Under "scrollTarget" it says "If you want to specify a value for scrollTarget but don't want to specify a value for delta, pass null for delta."

This is incorrect, because you don't pass these values, you receive them. You should also mention that "delta" is passed by Windows and is set in the Mouse Control Panel. "scrollTarget" is obviously passed by Flash.
Mario Klingemann said on Jun 29, 2006 at 5:03 AM :
The scrollTarget is not of type String as the docs say, but rather of type movieclip or object - at least that's what flash tells me if I test it like this:

private function onMouseWheel(delta:Number, clip:String):Void
{
trace(typeof clip);
}
peterd_mm said on Jun 30, 2006 at 1:29 PM :
Mario,

You are correct. The scrollTarget contains a reference to the symbol currently under the mouse cursor (which can be a MovieClip, Button, TextField, etc). Using the typeof operator on the scrollTarget returns either movieclip or object, although you can get more specific information by using the instanceof operator.

We'll make sure this is fixed in the next release of the document.
Не, просто в хелпе ошибка - это цитата отсюда:
http://livedocs.adobe.com/flash/8/ma...=00002433.html
Дословно: человек из тогдашней ММ пообещал исправить это в следующем релизе (очевидно забыли %)

Жень Шень 14.12.2007 17:17

Еще раз спасибо за исчерпующий ответ!
Тема второго параметра раскрыта полностью. :rtfm:
с меня :drinks:


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

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