Форум 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)
-   -   два вопроса по MovieClip (http://www.flasher.ru/forum/showthread.php?t=95871)

progman 17.05.2007 23:22

два вопроса по MovieClip
 
создаю массив объектов ( это будут фишки домино )
Код:

for (tz=0; tz<TABLE_SY; tz++)
{
        var tzObject:Object = new Object;
        tzObject.empty = true;
        tzObject.x = 50 + tx*(_SX/2-4) + tz*8;
        tzObject.y = 8 + ty*(_SY/2-4) - tz*8;
        tzObject.z = 0;               
        tyArray.push(tzObject);
}

потом перебираю все элементы массива и в каждом делаю мувик:
Код:

function OnInit()
{
        OnInitArray();

        var linkageId:String = "dragon.gif";
        var myBitmapData:BitmapData = BitmapData.loadBitmap(linkageId);
       
        for(var i:Number=0; i<150; i++)
          _root.bitmapData[i] = new BitmapData(_SX, _SY, true, 0xFF00FFFF);

        var i:Number = 0;
        var j:Number = 0;

        for( tz=0; tz<TABLE_SZ; tz++)
        for( tx=TABLE_SX; tx>=0; tx--)       
        for( ty=0; ty<TABLE_SY; ty++)                       
        {
                tzObject = cellTableData[tx][ty][tz];//<- это массив моих фишек.
                if( false == tzObject.empty )
                {                                                       
                        tzObject.mc_picture = this.createEmptyMovieClip(...);//<- создаю картинку для фишки
                        tzObject.mc_picture.attachBitmap(...);               
                        tzObject.mc_picture._visible = true;
                        _root.bitmapData[i].copyPixels(...);//<- копирую нужный кусок текстуры.
                               
                        tzObject.mc_picture.onMouseDown = function()//<- вроде как обработчик кликов должен быть.
                        {
                                OnClicMovieClip();
                        };

                        i ++;
                }
        }
}

function OnClicMovieClip()
{
        this._alpha = 50;
}

трабла номер 1.
по моему разумению код: tzObject.mc_picture.onMouseDown = function()
каждому созданному мувику должен был добавить индивидуальный обработчик кликов.
добавил. но при клике в произвольное место вызывается для всех элементов массива сразу. и устанавливается alpha = 50 всем элементам сцены, даже бэкграунду, который никоим образом не мог попасть в массив элементов, которым создавался обработчик. Как правильно делать обработчики для объектов?

вопрос номер2
сама задача стоит у меня так: при клике на фишку ее изображение инвертировать в цвете.

etc 17.05.2007 23:24

onMovieClick(this); внутри onMouseDown.

Код:

function onMovieClick(mc) {
  mc._alpha = 50;
  mc.blendMode = 'invert';
}


progman 17.05.2007 23:38

Код:

....
        tzObject.mc_picture.onMouseDown = function()
        {
                onMovieClick(this);
        };
....

function onMovieClick(mc)
{
  mc._alpha = 80;
}

при клике в любую точку вызывается для всех фишек в массиве. но для бэкграунда не вызывается.
надо ли вручную проверять попадает координата клика в Rect фишки-MovieClip или нет?

etc 17.05.2007 23:45

onPress вместо onMouseDown. onMouseDown — глобальный.

iNils 18.05.2007 00:16

progman получает второй плюс за название темы. 1, 2, 3...n вопросов про мувиклип - это не название, а газетный заголовок.

progman 18.05.2007 09:37

__etc псиб. оно самое.


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

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