2010-02-09 10 views
0

MISE À JOUR: Ce n'est pas un problème réel. Il se trouve qu'il y avait un autre Sprite en cours de création et mis à alpha = 0 qui se trouve juste à la même position Y que la hauteur du SimpleButton. Cela empêchait l'interaction avec le bouton. Merci aux gars pour vos pensées. Je ferme la question.Modification de SimpleButton.y ne semble pas déplacer le hitArea du bouton


J'ai un SimpleButton que je positionne sur la scène. Je fais une variété de choses avec ce que j'achète quand je mets la position Y il casse/altère le hitArea.

var playUp:Bitmap = getBitmap('play_up'); 
var playDown:Bitmap = getBitmap('play_down'); 

var Y:Number = 100; 

_playButton = new SimpleButton(playDown, playUp, playDown, playDown); 
_playButton.addEventListener(MouseEvent.CLICK, playClick); 
_playButton.x = (640/2) - (_playButton.width/2); 
_playButton.y = Y; 
_playButton.name = "playButton"; 
var shadow:DropShadowFilter = new DropShadowFilter(); 
shadow.distance = 5; 
shadow.angle = 25; 
shadow.alpha = 0.5; 
shadow.blurX = 8; 
shadow.blurY = 8; 
_playButton.filters = [shadow]; 
addChild(_playButton); 

Si je supprime la ligne _playButton.y = Y; le bouton fonctionne parfaitement, il est frappé zone couvre le bouton entier.
Si je mets var Y:Number = playDown.height; alors je ne peux pas survoler ou cliquer sur le bouton du tout.
Si je définis var Y:Number = playDown.height - 10; alors seulement le top 10px du bouton est actif, je peux cliquer et retourner le top 10px.

J'ai essayé d'envelopper le bouton dans un autre Sprite et de déplacer le sprite contenant, mais le résultat est exactement le même.

var playUp:Bitmap = getBitmap('play_up'); 
var playDown:Bitmap = getBitmap('play_down'); 

var Y:Number = 100; 

_playButton = new SimpleButton(playDown, playUp, playDown, playDown); 
_playButton.addEventListener(MouseEvent.CLICK, playClick); 
_playButton.x = (640/2) - (_playButton.width/2); 
_playButton.y = Y; 
_playButton.name = "playButton"; 
var shadow:DropShadowFilter = new DropShadowFilter(); 
shadow.distance = 5; 
shadow.angle = 25; 
shadow.alpha = 0.5; 
shadow.blurX = 8; 
shadow.blurY = 8; 
_playButton.filters = [shadow]; 

var holder:Sprite = new Sprite(); 
holder.addChild(_playButton); 
addChild(holder); 

Répondre

1

Avec deux images exportées pour Actionscript dans la bibliothèque, cela fonctionne très bien:

var playUpBMPD:BitmapData = new PlayUp(200, 40); 
var playDownBMPD:BitmapData = new PlayDown(200, 40); 
var playUp:Bitmap = new Bitmap(playUpBMPD); 
var playDown:Bitmap = new Bitmap(playDownBMPD); 

var Y:Number = 100; 

var _playButton:SimpleButton = new SimpleButton(playDown, playUp, playDown, playDown); 
_playButton.x = (640/2) - (_playButton.width/2); 
_playButton.y = Y; 
_playButton.name = "playButton"; 
var shadow:DropShadowFilter = new DropShadowFilter(); 
shadow.distance = 5; 
shadow.angle = 25; 
shadow.alpha = 0.5; 
shadow.blurX = 8; 
shadow.blurY = 8; 
_playButton.filters = [shadow]; 

addChild(_playButton); 

Qu'est-ce que GetBitmap faire? En outre, Y est-il utilisé ailleurs dans votre code?

1

Je n'ai jamais utilisé un SimpleButton auparavant, mais voici ce que je comprends d'une recherche Google de 10 minutes: Vous devrez peut-être changer manuellement l'emplacement du hitState, upState, downState, etc. du bouton à chaque fois vous le déplacez. Dans l'exemple suivant, il semble que leur hitState, etc pour le bouton sont dessinés à un endroit spécifique sur la scène.

http://weblog.cahlan.com/2006/07/simplebutton-class-in-actionscript-30.html

Et même dans l'exemple de la page de référence SimpleButton, on dirait qu'ils sont effectivement mise en l'emplacement du hitState:

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/SimpleButton.html

(W/excuses si je m complètement faux.)