Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вывод в динам.текст длину массива. (http://www.flasher.ru/forum/showthread.php?t=147465)

Lyso 05.12.2010 08:38

Вывод в динам.текст длину массива.
 
Я делаю урок http://easyflash.org/flashlearn/flas...sya-shary.html
Я захотел его улучшить, сделав видимый при просмотре счётчик количества мячей.
Я пытался сделать так:
Код AS3:

myText.text=myNameArray.length

Но выдавало ошибку:
"Монтажный кадр 1, слой "Слой 1", кадр 1, строка 12 1120: Обращение несуществующего свойства myText.
"

Переменную тексту я присвоил. Как сделать этот счётчик..?

samana 05.12.2010 09:16

Там же массив статический, по этому в кадре (первом и единственном) там где и myText напишите
myText.text= Ball.myNameArray.length

Но возможно и не так, ведь непонятно где у вас этот код расположен, в классе или в кадре?

Lyso 05.12.2010 14:34

У меня два файла, первый добавляет шары, а второй сам AS код.

Вод коды двух файлов:

1 файл, добавление самих шаров:
Код AS3:

import flash.display.Sprite; 
import flash.text.*;
 
stage.addEventListener(MouseEvent.CLICK,addBall);
 
function addBall(e:MouseEvent):void{
        var ball:Ball=new Ball();
        addChild(ball);
        ball.x=mouseX;
        ball.y=mouseY;
}
 
myText.text= Ball.allBalls.length

И второй, сам код (обрезан)
Код AS3:

package{
        import flash.display.MovieClip;
        import flash.events.Event;
        import flash.text.*;
 
        public class Ball extends MovieClip{
                public static var allBalls:Array=[];
                var xspeed:Number=-10+Math.random()*20;
                var yspeed:Number=-5;
                var grav:Number=1;
                var radius:Number;
 
                public function Ball(){
                        scaleX=scaleY=Math.random()*0.5+0.5;
                        radius=width/2;
                        allBalls.push(this);
                        addEventListener(Event.ENTER_FRAME,onFrame); //Слушатель событый, в каждый кадр.
                        trace(allBalls.length); //В trace всё выводится отлично, а в текст - нет!
 
                }
//Продолжение скрыто.

У меня выходит новая ошибка "Монтажный кадр 1, слой "Слой 1", кадр 1, строка 13 1067: Неявное приведение значения типа uint к несоответствующему типу String.
"

А если я делаю так:
Код AS3:

myText.text:String= Ball.allBalls.length

То ошибка "Монтажный кадр 1, слой "Слой 1", кадр 1, строка 13 1078: Метка должна быть простым идентификатором.
"

Её я решить уже не могу..

medvedya2 05.12.2010 14:41

попробуй так
Код AS3:

import flash.display.Sprite; 
import flash.text.*;
 
stage.addEventListener(MouseEvent.CLICK,addBall);
 
function addBall(e:MouseEvent):void{
        var ball:Ball=new Ball();
        addChild(ball);
        ball.x=mouseX;
        ball.y=mouseY;
          myText.text= Ball.allBalls.length.toString();
 
}


Lyso 05.12.2010 14:47

Больше спасибо! Сработало! А можете объяснить для чего эта строчка, и когда её надо добавлять?

medvedya2 05.12.2010 14:56

myText.text тип String
Ball.allBalls.length тип int
as3 имеет строгую типелизацию(не знаю как слово пишется)
тоесть нельзя сравнивать или присваивать переменные разных типов
у типа int есть метод(функция) toString который возвращает строковое представление числа.

КорДум 05.12.2010 15:11

Цитата:

строгую типелизацию
типизация.

Где-то видел тут, что "" + 5 работает быстрее.
Код AS3:

var str:String = "";
str += 5;
trace(str); // 5

Как видно, тут идет неявное преобразование типов.

medvedya2 05.12.2010 15:25

КорДум без ";" тоже работает, но ставить надо.

Цитата:

Где-то видел тут, что "" + 5 работает быстрее.
индусы постарались

КорДум 05.12.2010 16:02

Цитата:

без ";" тоже работает, но ставить надо.
Это вы не в тему. Для простеньких операций можно и такую штуку делать. Получаем выигрыш в скорости.

Ок, тогда так:
Код AS3:

String(5);

Пруфлинк: http://www.flasher.ru/forum/showthre...light=toString


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

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