2013-06-27 1 views
0

Я использую ползунок для настройки свойства альфа (непрозрачность) изображения. однако он работает не так, как ожидалось. когда альфа установлена ​​на 1 (то есть максимум на слайдере), тогда изображение показывает, но как только я скольжу до любого значения, меньшего единицы, изображение полностью исчезает. то есть у всех значений btw 0 и 0.99 нет изображения ... я предполагаю, что он устанавливает альфа-значение в 0 для всех значений, меньших 1. Я новичок с as3. это то, что я естьas3 alpha свойство с слайдером не работает как ожидается

пакет {

import flash.display.*; 
import flash.events.*; 

import fl.controls.Slider; 
import fl.events.SliderEvent; 


public class PicturePanel extends MovieClip { 
sliderA.width=125; 
     sliderA.x=425; 
     sliderA.y=15; 
     addChild(sliderA); 
     sliderA.addEventListener(SliderEvent.THUMB_DRAG, FnNewA); 
     sliderA.minimum=0; 
     sliderA.maximum=100; 
     sliderA.value=100; 
     pctPicture.txtA.text= "alpha = " + (sliderA.value/100); 



function FnNewA(event:SliderEvent):void { 

    pctPicture.txtA.text=""+event.value/100; 
     chief.gameBoard.gameNewPctA=event.value/100; 
     chief.gameBoard.FnEditPicture(); 

    } 


public function FnPanelSliderStart():void { 

sliderA.value=chief.gameBoard.gameNewPctA*100; 
     pctPicture.txtA.text=""+sliderA.value; 

} 
} 

package 
{ 

import flash.display.*; 
import flash.geom.*; 
import flash.events.*; 
import fl.motion.MatrixTransformer; 
import flash.display.BitmapData; 
import flash.display.Bitmap; 
import flash.display.Loader; 
import flash.net.URLRequest; 

import flash.filters.ConvolutionFilter; 

import flash.text.*; 

import flash.filters.DropShadowFilter; 


public class GameBoard extends MovieClip 
{ 
private var newPctA:Number = 1; 


public function FnEditPicture():void 
    { 
     arraySprite[chief.gamePanel.numSprite].getChildAt(0).alpha = gameNewPctA; 

} 


private function FnPanelPictureStartOne():void 
    { 
        newPctA = 1;    
     pctPanel.FnPanelSliderStart(); 
    } 

private function FnPanelPictureStartTwo():void 
    { 

newPctA =arraySprite[chief.gamePanel.numSprite].getChildAt(0).alpha; 


     pctPanel.FnPanelSliderStart(); 
    } 



public function set gameNewPctA(value:int):void 
    { 
     newPctA = value; 
    } 
    //-------------------------------------------------- 
    public function get gameNewPctA():int 
    { 
     return newPctA; 
    } 
} 
+0

Запустили ли вы режим отладки, получаете ли вы какие-либо ошибки, когда делаете? Всегда сложно понять Flash-проблемы, так как вещи могут быть организованы в рамках проекта разными способами. Например, это ваш основной код класса, если да, то где определение класса и определение пакета? – shaunhusain

+0

Отладка не отображает ошибок. Я добавил определения к вышеуказанному коду. это часть более крупного проекта, и код фрагментирован в нескольких файлах. Я выделил только альфа-слайдер. –

+0

Сложно сказать, что происходит с неорганизованным кодом в сообщении. Попробуйте изменить его, вы можете ввести имя файла выше, где код похож на [PicturePanel.as], нажмите пару раз, скопируйте и вставьте свой код непосредственно из файла, затем выделите весь код, который вы вставили, и нажмите {} код над редактором здесь на SO. Вы цените, когда вы трассируете его, должно быть в конечном итоге от 0 до 1, как вы говорите, всегда ли он отслеживает только 0 или 1? проследить его в FnEditPicture – shaunhusain

ответ

2

У вас есть ваши методы получения и установки функции возвращения/принимать целые числа вместо чисел. Int всегда будет округлять до ближайшего целого числа (0 в этом случае). Вместо этого используйте Number, чтобы получить десятичное значение.

public function set gameNewPctA(value:Number):void 
    { 
     newPctA = value; 
    } 
//-------------------------------------------------- 
public function get gameNewPctA():Number 
    { 
     return newPctA; 
    } 
}