Форум 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=145168)

xintrea 30.09.2010 21:28

Почему не показывается простая кнопка?
 
Здравствуйте!


Целый день разбираюсь, как программно создавать кнопки. Уже устал, кнопки так и не увидел. Упростил код до безобразия:

Код AS3:

package {
  import flash.display.Sprite;
  import flash.text.TextField;
  import mx.controls.Button;
 
  public class Main extends Sprite {
 
  public function Main()
  {
  var display_txt:TextField = new TextField();
  display_txt.text = "This is text";
  addChild(display_txt);
 
  var pButton:Button = new Button();
  pButton.label="This is button";
  addChild(pButton);
  }
 }
}

Компилирую его через mxmlc, ошибок нет. Ролик показывает только текст, а кнопки не видно. Что я сделал неправильно?

AlesNormales 30.09.2010 21:42

Никогда не пробовал этого делать, но если расширять mx.containers.Canvas вместо спрайта?

xintrea 30.09.2010 21:56

Цитата:

Сообщение от AlesNormales (Сообщение 939941)
Никогда не пробовал этого делать, но если расширять mx.containers.Canvas вместо спрайта?

Попробовал:

Код AS3:

import mx.containers.Canvas;
...
public class Main extends Canvas {
...
}

Тогда и текст и кнопка не показывается, и лезет ошибка во время выполнения:

Код:

Произошла ошибка ActionScript:
TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.text::TextField@b430d061 в mx.core.IUIComponent.
        at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::addingChild()
        at mx.core::Container/addChildAt()
        at mx.core::Container/addChild()
        at Main()


AlesNormales 30.09.2010 22:03

Без текстфилда должно работать. А если оставить спрайт, то SimpleButton по идее прокатит

SilverToad 30.09.2010 22:04

Товарищи, дело в том, что Flex компоненты нативно не добавляются на AS спрайты, а flash компоненты не добавляются на flex компоненты, так как не поддерживают IUIInterface, на сколько я помню.

AlesNormales 30.09.2010 22:05

ну так поэтому с канвасом будет работать кнопка из контролов, и не будет текстфилд, а со спрайтом будет работать текстфилд и простая кнопка. как-то так

xintrea 30.09.2010 22:19

Так как же показать и текстфиелд, и кнопку??? Дикость какая-то.

AlesNormales 30.09.2010 22:21

ну обычную кнопку покажите с текстфилдом на спрайте

SilverToad 30.09.2010 22:23

или на Canvas: Button и Label +))

xintrea 30.09.2010 23:05

Цитата:

Сообщение от AlesNormales (Сообщение 939952)
ну обычную кнопку покажите с текстфилдом на спрайте

Обычная кнопка - это какой класс? Я в этих кнопках уже запутался. Если "обычная кнопка" - это SimpleButton, то у нее почему-то в документации нет свойства Label или Text, ну в общем, неясно как надпись на этой кнопке задавать.

PS: И еще непонятно - есть класс Button в spark.components и в mx.controls. Как Flex определяет, какой класс имеется в виду? По тому, что было импортировано через import?


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

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