Форум 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)
-   -   Дублирование и смещение 1200 объектов (http://www.flasher.ru/forum/showthread.php?t=134715)

deman455 08.01.2010 17:15

Дублирование и смещение 1200 объектов
 
У меня есть ввод поля INPUT . Как сделать чтобы это поля дублировалось и розмещялось в квадрате 40*30 (тоесть 1200 вводимых полей) И с каждой копией название этого поля минялось, чтобы похожим не было. К примеру inp1,inp2,inp3,inp4 и так до 1200 в одном квадрате, чтоб ырозстояние было между все одинаковое. Такое реально? чтобы флешка ещё не зависла...

Добавлено через 1 минуту
Просто влом вырисовывать все 1200 вводимых полей :D

alexcon314 08.01.2010 17:48

1200 инпутов.... интересно, а кто будет в них чего-то инпутить? Это, видимо, какой-то хитрый замысел? И потом, 40*30 = 1200, это правда, так у вас поля размера 1*1 что ли?

deman455 08.01.2010 17:53

Цитата:

Сообщение от alexcon314 (Сообщение 877567)
1200 инпутов.... интересно, а кто будет в них чего-то инпутить? Это, видимо, какой-то хитрый замысел? И потом, 40*30 = 1200, это правда, так у вас поля размера 1*1 что ли?

Я не задавал вопрос, кто будет запролнять эти 1200 инпутов :)
вопрос в дубоирование и смещение.

alexcon314 08.01.2010 18:09

Этот вопрос задал я. И?
Про размер полей тоже, поясните, если не трудно.
У меня возникло смутное подозрение, что вы хотите грязно изнасиловать флэш-плеер.

deman455 08.01.2010 18:17

alexcon314
Может для вас это и изнасилование, но оно вовсе не грязное. Как дублировать мувиклипы, и смещять их ?

alexcon314 08.01.2010 18:19

Теперь уже речь идет о мувиклипах?
Цитата:

Такое реально? чтобы флешка ещё не зависла...
Когда тебя насилуют, тут уж не до ..

deman455 08.01.2010 18:20

Цитата:

Сообщение от alexcon314 (Сообщение 877567)
вас поля размера 1*1 что ли?

Это количество полей инпутов по ширине и высоте.
40 по ширыне
30 по высоте.

Добавлено через 38 секунд
alexcon314
Вы можете говорить по теме, а не терять время на ненужные переписывания ?

Добавлено через 1 минуту
Просто скажите как дублировать мувики и смещять их ?

alexcon314 08.01.2010 18:27

Как вы представляете себе 1200 полей 40х30 втиснутые в "квадрат" 40х30?
Это вы говорите не по теме. Я по теме спрашиваю.

etc 08.01.2010 18:35

attachMovie, createEmptyMovieClip, даже duplicateMovieClip, если хотите.

deman455 08.01.2010 18:46

alexcon314
блин какой квадрат.
вот пример
[][][][][][]
[][][][][][]
[][][][][][]
^^^^^^ Это 6х3 . 6 инпут полей на 3 инпут полей и чтобы все в ряд.
Вот человек нормально ответил

Цитата:

Сообщение от etc (Сообщение 877584)
attachMovie, createEmptyMovieClip, даже duplicateMovieClip, если хотите.

Без вопросов зачем тебе это и то.
alexcon314 от вас я уже ничего не жду, спосибо etc

alexcon314 08.01.2010 19:02

Цитата:

Как сделать чтобы это поля дублировалось и розмещялось в квадрате 40*30 (тоесть 1200 вводимых полей).
Цитата:

блин какой квадрат.
вот пример
[][][][][][]
[][][][][][]
[][][][][][]
^^^^^^ Это 6х3 . 6 инпут полей на 3 инпут полей и чтобы все в ряд.
Ну а etc, спасибо, конечно.

VVall 08.01.2010 19:14

deman455, вам пытаются показать, что ваша проблема возникла из-за неоптимального подхода к решению задачи. Можно не решать проблему, если изменить подход.

fessor 08.01.2010 22:04

обычно размещение большого количества копий одного символа делаю так:
Код AS1/AS2:

for (ax=0, ax<30, ax++){
 for (ay=0, ay<40, ay++){
  obrazetcName.duplicateMovieClip("inp"+ax+ay, getNextHighestDepth())
  this["inp"+ax+ay]._x = ax*20
  this["inp"+ax+ay]._y = ay*10
 }
}

Вот, как-то так (правда getNextHighestDepth() - что-то с написанием намудрил, как правильно не помню уже, но суть должна быть понятна)

Talaf 09.01.2010 01:25

Код AS1/AS2:

дубл
for (j=1; j<(1200); j++) {
                duplicateMovieClip(_root.ae,"a"+j,j);
 
                }
//        размещение       
        for (j=1; j<(1200); j++) {
                this["a"+j]._x=50+60*j;
//сам придумай алгоритм размещения       
        }


udaaff 09.01.2010 01:42

fessor, записывать ссылку на объект нужно в переменную, а не вычислять путь к объекту по 100 раз.
Код AS1/AS2:

for (ax=0, ax<30, ax++){
 for (ay=0, ay<40, ay++){
  var mc:MovieClip = obrazetcName.duplicateMovieClip("inp"+ax+ay, getNextHighestDepth())
  mc._x = ax*20
  mc._y = ay*10
 }
}

Talaf, начерта тут два цикла нужно друг за другом?

fessor 09.01.2010 18:30

виноват, исправляюсь ))

Код AS1/AS2:

var tmp:Number;
for (ax=0, ax<30, ax++){
tmp = ax*20
 for (ay=0, ay<40, ay++){
  obrazetcName.duplicateMovieClip("inp"+ax+ay, getNextHighestDepth())
  this["inp"+ax+ay]._x = tmp
  this["inp"+ax+ay]._y = ay*10
 }
}


udaaff 09.01.2010 18:33

Я, вообще, о this["inp"+ax+ay] =) Но это тоже добавить можно.

SerKu 09.01.2010 18:50

Анаогичная проблема
 
В общем моя проблема аналогична. Сцена размером 200х200. В библиотеке лежит мувик dot размерами 4х4 пикселя (linkage тоже dot). Написал такой скрипт
Код AS1/AS2:

function drawGrid(theWidth:Number, theHeight:Number):Void {
        var initDot:Object = new Object();
        var k:Number = 0;
        for (var i; Number=0, i<theWidth; i += 4) {
                for (var j; Number=0, j<theHeight; j += 4) {
                        var dotN:String = "dot"+i+"_"+j;
                        initDot._x = i;
                        initDot._y = j;
                        this.attachMovie("dot", dotN, k, initDot);
                        k++;
                }
        }
}
drawGrid(200,200);

Однако он не работает. Подскажите, в чем проблема?:)

fessor 09.01.2010 19:11

скрипт рабочий, просто тут изменяются координаты ОДНОГО мувика, а копии создаются позже чем надо
попробуй так:
Код AS1/AS2:

                        var dotN:String = "dot"+i+"_"+j;
                        this.attachMovie("dot", dotN, k, initDot);
                        this[dotN]._x = i;
                        this[dotN]._y = j;
                        k++;


udaaff 09.01.2010 19:26

Цитата:

Сообщение от fessor (Сообщение 877827)
скрипт рабочий, просто тут изменяются координаты ОДНОГО мувика, а копии создаются позже чем надо

Свойства через initObject задаются, так что все верно за исключением того, что условия в циклах заданы с ошибками.
Код AS1/AS2:

for (var i:Number = 0; i < theWidth; i += 4) 
{
    for (var j:Number = 0; j < theHeight; j += 4)
    {


SerKu 09.01.2010 19:49

Спасибо udaff, заработало)))
А как сделать, чтоб они по очереди появлялись, с периодом, скажем, 1 сек.

udaaff 09.01.2010 20:19

Код AS1/AS2:

var dots:Array = [];
 
drawGrid(50, 50);
 
var i:Number = 0;
var m:Number = dots.length - 1;
var intervalID:Number = setInterval(intervalHandler, 1);
 
function intervalHandler():Void
{
        if (i > m)
        {
                clearInterval(intervalID);
                return;
        }
 
        var dot:MovieClip = MovieClip(dots[i]);
        dot._visible = true;
        i++
}
 
function drawGrid(theWidth:Number, theHeight:Number):Void
{
        var k:Number = 0;
        for (var i: Number=0; i<theWidth; i += 4)
        {
                for (var j: Number=0; j<theHeight; j += 4)
                {
                        var dot:MovieClip = this.attachMovie("dot", "dot"+i+"_"+j, k++);
                        dot._x = i;
                        dot._y = j;
                        dot._visible = false;
                        dots.push(dot);
                }
        }
}


SerKu 09.01.2010 23:08

Вложений: 1
Прикольно, спасибо:). Но у меня задумка была такой (см. архив). Только там все сделано вручную, с помощью масок.


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

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