【问题标题】:TextField breaking MOUSE_OVER after moving it移动后TextField打破MOUSE_OVER
【发布时间】:2010-05-14 10:09:32
【问题描述】:

我在 MOUSE_OVER 事件中遇到了一个非常奇怪的问题。我正在构建代表 mp3 歌曲的动态选项卡,其中包含带有信息的文本字段和封面艺术的动态图像。我正在尝试让一个简单的 MOUSE_OVER 在整个选项卡上运行,这样您就可以选择下一首要播放的歌曲。

我使用 alpha 0 的 Sprite 覆盖我的整个选项卡(包括 textFields)作为 MOUSE_OVER 和 _OUT 的侦听器...我已经通过将 alpha 设置为可见的东西进行检查,它确实覆盖了我的选项卡和在我移动它时跟随它(只要确保在不移动热点的情况下我不会移动标签)。另外,我只在封面艺术加载后创建它,以确保它也能覆盖它。

现在,当标签位于顶部位置时,一切都是令人振奋的。一旦我移动选项卡为下一个选项卡腾出空间,textFields 就会破坏我的滚动行为......就像在你正在监听 MouseEvents 的那个上覆盖一个精灵的菜鸟错误一样。但是...滚动区域仍在该字段的顶部,我在 textFields 上将 selectable 和 mouseEnabled 设置为 false...什么都没有。

就好像现在仅仅移动整个选项卡就将 textField 放在了我的选项卡中的所有内容之上(而在视觉上,它仍然在它的预期层中)。

我正在使用像素字体,但尝试使用系统字体,同样的事情......我的智慧到此为止。

public function Tab(tune:Tune) {
    _tune = tune;
    mainSprite = new Sprite();
    addChild(mainSprite);
    drawBorder();
    createFormat();
    placeArtist();
    placeTitle();
    placeAlbum();
    coverArt();

}

private function placeButton():void {
    _button = new Sprite();
    _button.graphics.beginFill(0xFF000,0);
    _button.graphics.drawRect(0,0,229,40);
    _button.graphics.endFill();
    _button.addEventListener(MouseEvent.MOUSE_OVER, mouseListener);
    _button.addEventListener(MouseEvent.MOUSE_OUT, mouseListener);
    _button.buttonMode = true;
    mainSprite.addChild(_button);
}

private function mouseListener(event:MouseEvent):void {
        switch(event.type){
            case MouseEvent.MOUSE_OVER :
                hilite(true);
                break;
            case MouseEvent.MOUSE_OUT :
                hilite(false);
                break;
        }
}

private function createFormat():void {
    _format = new TextFormat();
    _format.font = "FFF Neostandard";
    _format.size = 8;
    _format.color = 0xFFFFFF;
}

private function placeArtist():void {
    var artist : TextField = new TextField();
    artist.selectable = false;
    artist.defaultTextFormat = _format;

    artist.x = 41;
    artist.y = 3;
    artist.width = 135;
    artist.text = _tune.artist;
    artist.mouseEnabled = false;
    mainSprite.addChild(artist);
}

private function placeTitle():void {
    var title : TextField = new TextField();
    title.selectable = false;
    title.defaultTextFormat = _format;

    title.x = 41;
    title.y = 14;
    title.width = 135;
    title.text = _tune.title;
    title.mouseEnabled = false;
    mainSprite.addChild(title);
}

private function placeAlbum():void {
    var album : TextField = new TextField();
    album.selectable = false;
    album.defaultTextFormat = _format;

    album.x = 41;
    album.y = 25;
    album.width = 135;
    album.text = _tune.album;
    album.mouseEnabled = false;
    mainSprite.addChild(album);
}

private function drawBorder():void {
    _border = new Sprite();
    _border.graphics.lineStyle(1, 0x545454);
    _border.graphics.drawRect (0,0,229,40);
    mainSprite.addChild(_border);
}

private function coverArt():void {
    _image = new Sprite();
    var imageLoader : Loader = new Loader();

    _loaderInfo = imageLoader.contentLoaderInfo;
    _loaderInfo.addEventListener(Event.COMPLETE, coverLoaded)

    var image:URLRequest = new URLRequest(_tune.coverArt);
    imageLoader.load(image);
    _image.x = 1.5;
    _image.y = 2;
    _image.addChild(imageLoader);
}

private function coverLoaded(event:Event):void {
    _loaderInfo.removeEventListener(Event.COMPLETE, coverLoaded);
    var scaling : Number = IMAGE_SIZE / _image.width;
    _image.scaleX = scaling;
    _image.scaleY = scaling;
    mainSprite.addChild (_image);
    placeButton();
}

public function hilite(state:Boolean):void{
    var col : ColorTransform = new ColorTransform();
    if(state){
        col.color = 0xFFFFFF;
    } else {
        col.color = 0x545454;
    }
    _border.transform.colorTransform =  col;
}

【问题讨论】:

    标签: actionscript-3 mouseover textfield


    【解决方案1】:

    修复它。发生的事情是我没有设置文本字段的高度。这超出了选项卡,因此位于先前实例化的选项卡上,阻止了 MouseOver... 甚至不要问。

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多