X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Добавить обьект в массив, с изминением имени обьекта
Banderas
Banderas
Topic Starter сообщение 11.5.2010, 20:02; Ответить: Banderas
Сообщение #1


Суть проблемы заключается в том, что бы занести обьект с его свойствами в массив, одновременно переименовывая его.
var c:Shape = new Shape();
c.graphics.beginFill(000000);
c.graphics.drawCircle(0,0,15);
c.graphics.endFill();
c.x = mouseX;
c.y = mouseY;

Num += 1;
mas.push(this+Num);

this - это сам обьект, в данном случае "с". Нужно что бы в массив заносились данные в виде с1, с2, с3, ... Как правильно записать? При таком выполнении компилятор выдаёт ошибку:
TypeError: Error #1010: Термин не определен и не имеет свойств.
at Untitled_fla::MainTimeline/EnterF()


Кому интересно - весь код:
var mas:Array = new Array();
var Num:int = 0;
var c:Shape = new Shape();
    c.graphics.beginFill(000000);
    c.graphics.drawCircle(0,0,15);
    c.graphics.endFill();

addEventListener(Event.ENTER_FRAME, EnterF);
function EnterF(event:Event):void
{
    c.x = mouseX;
    c.y = mouseY;

    Num += 1;
    mas.push(this+Num);
    
    for (var i:int = mas.length; i > 0; i--) {
        mas[i].alpha -= 0.1;
    }
}

addChild(c);


Флешка должна работать так: за курсором тянутся шарики, чем дальше от курсора, тем меньше их прозрачность.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dreemix
dreemix
сообщение 12.5.2010, 1:34; Ответить: dreemix
Сообщение #2


Banderas, вы хоть отдыхаете от флеша?
Давайте разбирать.
Массив проще создавать с помощью литерала:
var mas:Array = [];

В функции EnterF вы приращиваете num, но нового экземпляра не создаете! Он создается у вас один раз.
А если координаты задать как
    c.x = mouseX;
    c.y = mouseY;

то у вас один круг наложится на другой, нужно чтобы координата зависила от num
graphics.beginFill(000000);

это ошибка нужно
graphics.beginFill(0x000000);
или
graphics.beginFill(0);

переменные принято именовать со сточной буквы:
var num:int = 0;


Но, чтобы не быть голословным, приведу и я свой код, правда, у меня тоже не получилось выстроить шарики. Может, кто-то найдет ошибку:
var mas:Array=[];
var canvas:Sprite;
var alph:int=1;
init();

function init():void {
    Mouse.hide();
    canvas=new Sprite();
    addChild(canvas);
    for (var i:int=0; i<4; i++) {
        var cir=drawCir();
        mas.push(cir);
    }
    for (var f:int=0; f<mas.length; f++) {
        mas[f].x=f*10;
        mas[f].y=f*10;
        mas[f].alpha=alph;
        alph-=0.1;
        canvas.addChild(mas[f]);
    }
}

function drawCir():Sprite {
    var c:Sprite = new Sprite();
    c.graphics.beginFill(0);
    c.graphics.drawCircle(0,0,10);
    c.graphics.endFill();
    return c;
}

addEventListener(Event.ENTER_FRAME, UPD);
function UPD(e:Event):void {
    canvas.x=mouseX;
    canvas.y=mouseY;
}

Писалось под музыку: Chevelle
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
Topic Starter сообщение 14.5.2010, 17:49; Ответить: Banderas
Сообщение #3


Я уже забыл об этой проблеме... Не ищу ничего))) Постараюсь на днях узнать как это делать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dreemix
dreemix
сообщение 15.5.2010, 12:52; Ответить: dreemix
Сообщение #4


В общем ошибка глупая и состояла в ошбке типа. Нужно
var alph:Number=1;

Вот рабочий код, получилось довольно симпотично!
var mas:Array=[];
var canvas:Sprite;
var alph:Number=1;
init();

function init():void {
    Mouse.hide();
    canvas=new Sprite();
    addChild(canvas);
    for (var i:int=0; i<40; i++) {
        var cir:*=drawCir();
        mas.push(cir);
        //trace("cir "+i+" created");
    }
    position();
    test();
}

function drawCir():Sprite {
    var c:Sprite = new Sprite();
    c.graphics.beginFill(0);
    c.graphics.drawCircle(0,0,10);
    c.graphics.endFill();
    return c;
}
function position():void {
    for (var f:int=0; f<mas.length; f++) {
        canvas.addChild(mas[f]);
        mas[f].x=Math.random()*200;
        mas[f].y=Math.random()*200;
        mas[f].alpha=alph;
        alph-=0.02;
        trace(canvas.numChildren);
    }
}
addEventListener(Event.ENTER_FRAME, UPD);
function UPD(e:Event):void {
    canvas.x=mouseX;
    canvas.y=mouseY;
}
function test():void {
    for (var i:String in mas) {
        trace(mas[i]);
    }
}


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 15.5.2010, 13:22; Ответить: ZiTosS
Сообщение #5


Renovatio, полезно было бы увидеть комментарии для кода выше.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dreemix
dreemix
сообщение 15.5.2010, 13:32; Ответить: dreemix
Сообщение #6


Ааааа, так там же все просто!!!
var mas:Array=[];
var canvas:Sprite;
var alph:Number=1;
init();

function init():void {
    Mouse.hide();//прячем мышь
    canvas=new Sprite();
    addChild(canvas);//это спрайтовый контейнер, в котором будем рисовать шары
    for (var i:int=0; i<40; i++) {//их будет 40
        var cir:Sprite=drawCir();//рисуем
        mas.push(cir);//заносим в массив
    }
    position();//рандомно позиционируем
}

function drawCir():Sprite {
    var c:Sprite = new Sprite();
    c.graphics.beginFill(0);
    c.graphics.drawCircle(0,0,10);
    c.graphics.endFill();
    return c;
}
function position():void {
    for (var f:int=0; f<mas.length; f++) {
        canvas.addChild(mas[f]);
        mas[f].x=Math.random()*200;
        mas[f].y=Math.random()*200;
        mas[f].alpha=alph;
        alph-=0.02;
    }
}
addEventListener(Event.ENTER_FRAME, UPD);//меняем координаты при движении мыши
function UPD(e:Event):void {
    canvas.x=mouseX;
    canvas.y=mouseY;
}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
Topic Starter сообщение 15.5.2010, 23:54; Ответить: Banderas
Сообщение #7


2*Renovatio* немного не то получилось что хотел... мне надо сделать хвост за мышкой, а не рандомно вывести 40 кружков :(
Вот то, что мне нужно было _http://demiart.ru/forum/index.php?showtopic=109102
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dreemix
dreemix
сообщение 16.5.2010, 1:04; Ответить: dreemix
Сообщение #8


(Banderas @ 15.5.2010, 22:54) *
2*Renovatio* немного не то получилось что хотел... мне надо сделать хвост за мышкой, а не рандомно вывести 40 кружков :(
Вот то, что мне нужно было _http://demiart.ru/forum/index.php?showtopic=109102


Ну так я же не цветочная фея, правильно??? Ничто не мешает вам изменить код так, чтобы все было удобно. Тем более что если у вас есть код того как это работает, зачем спрашивали????
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Banderas
Banderas
Topic Starter сообщение 16.5.2010, 1:15; Ответить: Banderas
Сообщение #9


2*Renovatio* этот урок я нашел 2 часа назад. Просто хотел сам реализовать такую фигню, вот и спросил.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Если в сайт с одними ключами, которые там долго, добавить новую рубрику с новыми ключами
2 Tutich 1336 16.4.2024, 8:27
автор: Tutich
Открытая тема (нет новых ответов) Восстановить сайт + добавить исходные данные
5 Portsmouth 1993 21.5.2023, 7:23
автор: Skyworker
Открытая тема (нет новых ответов) Нужно добавить несколько компаний в Google Miй бiзнес
1 Barselona 2011 10.8.2019, 10:19
автор: Barselona
Открытая тема (нет новых ответов) Разбить массив категорий на колонки
2 vitek_gagra 1599 30.3.2019, 16:41
автор: Gerga
Открытая тема (нет новых ответов) Нужно добавить картинки на сайт
И видео
2 Ksardas777 4097 17.11.2018, 10:41
автор: Intuit89


 



RSS Текстовая версия Сейчас: 26.4.2024, 4:19
Дизайн