Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив MovieClip, как создать? 
:(
    Опции темы
forever11
Дата 1.3.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Нужно нарисовать матрицу n x m, где каждая ячейка - MovieClip.

Это в root:

Код

function createMatrix()
{

    var Height:Number = 20;
    var Width:Number = 20;
    var Distance:Number = 2;
    for(var i:Number=0;i<10;i++) {
        for(var j:Number=0;j<10;j++) {
            this.cells[i*j] = this.createEmptyMovieClip("cells", _root.getNextHighestDepth());
            this.cells[i*j].lineStyle(1, 0x00000, 100);
            this.cells[i*j].beginFill(0xFF0000, 100);
            this.cells[i*j].moveTo((Width+Distance)*i, (Height+Distance)*j);
            this.cells[i*j].lineTo((Width+Distance)*i+Width, (Height+Distance)*j);
            this.cells[i*j].lineTo((Width+Distance)*i+Width, (Height+Distance)*j+Height);
            this.cells[i*j].lineTo((Width+Distance)*i, (Height+Distance)*j+Height);
            this.cells[i*j].lineTo((Width+Distance)*i, (Height+Distance)*j);
            this.cells[i*j].endFill();
            this.cells[i*j].onPress = function() { trace(i*j); };
        }
    }

createMatrix();



Правильно ли это? Почему trace при нажатии на любой клип возвращает 100 (10*10)?

А еще почему-то первая ячейка не отображается smile

Это сообщение отредактировал(а) forever11 - 1.3.2007, 12:29
PM MAIL   Вверх
AlDev
Дата 1.3.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



потому что i и j там будут последние из цикла.
Код

function createMatrix():Void {
    var Height:Number = 20;
    var Width:Number = 20;
    var Distance:Number = 2;
    for(var i:Number=0;i<10;i++) {
        for(var j:Number=0;j<10;j++) {
            this.cells[i+'_'+j] = this.createEmptyMovieClip("cells"+i+'_'+j, _root.getNextHighestDepth());
            this.cells[i+'_'+j].lineStyle(1, 0x00000, 100);
            this.cells[i+'_'+j].beginFill(0xFF0000, 100);
            this.cells[i+'_'+j].moveTo((Width+Distance)*i, (Height+Distance)*j);
            this.cells[i+'_'+j].lineTo((Width+Distance)*i+Width, (Height+Distance)*j);
            this.cells[i+'_'+j].lineTo((Width+Distance)*i+Width, (Height+Distance)*j+Height);
            this.cells[i+'_'+j].lineTo((Width+Distance)*i, (Height+Distance)*j+Height);
            this.cells[i+'_'+j].lineTo((Width+Distance)*i, (Height+Distance)*j);
            this.cells[i+'_'+j].endFill();
            this.cells[i+'_'+j].i = i;
            this.cells[i+'_'+j].j = j;
            this.cells[i+'_'+j].onPress = function() { trace(this.i*this.j); };
        }
    }

ps: this.cells[i*j] гон, ибо
2*5 = 5*2 smile
PM MAIL WWW ICQ YIM MSN   Вверх
forever11
Дата 2.3.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Да, ступил. Просто не нашел, как двумерные массивы нормально сделать.
Спасибо.
PM MAIL   Вверх
AlDev
Дата 3.3.2007, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



это не двумерный массив.
Если через двумерные массивы:
Код

function createMatrix():Void {
    var Height:Number = 20;
    var Width:Number = 20;
    var Distance:Number = 2;
    for(var i:Number=0;i<10;i++) {
        this.cells[i] = new Array();
        for(var j:Number=0;j<10;j++) {
            this.cells[i][j] = this.createEmptyMovieClip("cells"+i+'_'+j, _root.getNextHighestDepth());
            this.cells[i][j].lineStyle(1, 0x00000, 100);
            this.cells[i][j].beginFill(0xFF0000, 100);
            this.cells[i][j].moveTo((Width+Distance)*i, (Height+Distance)*j);
            this.cells[i][j].lineTo((Width+Distance)*i+Width, (Height+Distance)*j);
            this.cells[i][j].lineTo((Width+Distance)*i+Width, (Height+Distance)*j+Height);
            this.cells[i][j].lineTo((Width+Distance)*i, (Height+Distance)*j+Height);
            this.cells[i][j].lineTo((Width+Distance)*i, (Height+Distance)*j);
            this.cells[i][j].endFill();
            this.cells[i][j].i = i;
            this.cells[i][j].j = j;
            this.cells[i][j].onPress = function() { trace(this.i*this.j); };
        }
    }

PM MAIL WWW ICQ YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.