AS3 не добавляет спрайт в мувиклип - PullRequest
0 голосов
/ 22 сентября 2011

Мой код просто перебирает XML-файл и создает «страницы» (которые впоследствии анимируются).

Это все работало нормально, но теперь я хочу добавить спрайт для всего содержимого страницы, если содержимое xml содержит URL.

Во время выполнения я вижу, что проверки URL-адреса обрабатываются правильно и что создается оверлей, но я не могу «увидеть» его на странице.

Следующий код находится в цикле for для каждой страницы в XML-файле:

var page:Page = new Page(); //MovieClip in my library
// ... other stuff
var textMC:FadeText = new FadeText(xml); //load the text from the xml fragment for this page
//if the text contains a URL (using RegExp)
if(textMC.hasLink())
{
    var button:Sprite = new Sprite();
    button.graphics.beginFill(0x000000);
    button.graphics.drawRect(0, 0, 1, 1);
    button.name= textMC.getLink();
    button.x = button.y = button.alpha = 0;
    button.width = rectangle.width;
    button.height = rectangle.height;
    button.buttonMode = true;
    button.addEventListener(MouseEvent.CLICK, goToUrl, false, 0, true);
    page.addChildAt(button, page.numChildren);
}
//... more code - such as add page to stage.

Из консоли (с использованием FireBug и FlashBug) кнопка создается, но я не вижу ее на экране, поэтому я предполагаю, что бит addChild виноват.

Что не так и как мне это исправить?

[править] Установив альфа на 1, я вижу, что оверлей IS добавляется на страницу, но он не меняет мой курсор и не реагирует на щелчки мыши.

Теперь я считаю, что что-то не так с XML. Это правильно проанализированный XML (в противном случае FlashPlayer вызовет исключения в моем лице), и кажется, что этот код работает на каждой странице, кроме второй. Более того, если вторая страница установлена ​​как видимая (флаг в XML определяет, создана страница или нет), тогда ни одна из других страниц не работает.

Ответы [ 3 ]

1 голос
/ 31 января 2013

Извините за эту тему, но я могу думать о том, что, поскольку вы указываете z-позицию для размещения своей страницы, возможно, z-позиция, сгенерированная (i + 1), не является следующей в строке , AS3 не позволяет размещать экранные объекты на «слоях» с пустыми «слоями» между ними, что было разрешено в AS2.

Я предполагаю, что во время цикла в той или иной точке цикл не генерирует страницу, которая оставляет пустой слой. Причина, по которой stage.addChild(page) действительно работает, заключается в том, что он просто ищет следующий пустой слой в этом стеке, потому что вы его не указываете.

0 голосов
/ 23 сентября 2011

Нелогичный ответ:

Заменено stage.addChildAt(page,i+1); на stage.addChild(page);.

Я хватался за соломинку. FAR слишком долго работал над этим сообщением, но оно работает! Я не знаю, ПОЧЕМУ это работает, и на данный момент мне все равно; ОНО РАБОТАЕТ!!! (извините за непрофессионализм, однако я потратил два с половиной дня, работая над этим, и только что получил его работу!)

Если кто-то хочет объяснить , почему это работает, не стесняйтесь. Я бы ОЧЕНЬ предпочел бы узнать, почему это происходит из-за этой борьбы.

0 голосов
/ 22 сентября 2011
button.x = button.y = button.alpha = 0;

установите альфа на 1

button.alpha = 1;

и проверьте, что у прямоугольника, ширины, прямоугольника. Высота

, проверьте textMC.hasLink (), если это правда или нет,Если это правда, существует другая проблема с вашим кодом, которая не связана с этим примером кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...