سؤال

وأنا المطلوبة لتكبير قماش من خلال Hslider. والمشكلة هي بعد التكبير قماش لا أستطيع أن انتقل إلى أقصى اليسار وأعلى من قماش أي بمعنى جزء من قماش اليسار وأعلى غير مرئية. لا أستطيع العثور على سبب. ويرد أدناه شفرة المصدر لالمثال. "

import mx.events.SliderEvent;

private function changeZoom(event:SliderEvent) : void
{
layout_cnv.scaleY = event.target.values[0]*2/100;
layout_cnv.scaleX = event.target.values[0]*2/100;
}

private function adjustDefaultZoom() : void
{
layout_cnv.scaleX = slider.values[0]/100*2;
layout_cnv.scaleY = slider.values[0]/100*2;
}

private function myDataTipFunc(val:String):String {
            return  String(val)+ "%";
        }

]]>
</mx:Script>

<mx:Panel title="Zoom Demo" width="100%" height="100%">

<mx:Canvas id="canvas" width="100%" height="100%"  horizontalScrollPosition="500">

<!--<mx:Image id="img" x="{canvas.width/2 - img.width/2}"
y="{canvas.height/2 - img.height/2}"
source="@Embed('../assets/products/Nokia_6630.png')"
creationComplete="adjustDefaultZoom()"
/>-->

<mx:Canvas visible="true" id="layout_cnv" creationComplete="adjustDefaultZoom()"  borderStyle="solid" height="300"

             width="500" verticalCenter="0" horizontalCenter="0"
              verticalScrollPolicy="off" horizontalScrollPolicy="off" backgroundColor="#FFFFFF">

        <mx:TextArea id="company_name_ta" visible="true"   selectable="true"  editable="true" height="20" backgroundAlpha="0.0" borderColor="#000000"  width="200" fontSize="14" 
            borderStyle="solid"  x="10" y="10" />
        <mx:TextArea id="job_ta" height="20"  selectable="true" borderColor="#000000" width="200"  x="289" y="10"  backgroundAlpha="0.0" textAlign="right"/>
        <mx:TextArea id="fullname_ta" height="20"    selectable="true" backgroundAlpha="0.0" borderColor="#000000" width="200"  x="10" y="38" editable="true" enabled="true"/>
        <mx:TextArea id="adress_line3_ta"  height="20" selectable="true" backgroundAlpha="0.0" borderColor="#000000"  width="200" x="10" y="268"/>
        <mx:TextArea id="adress_line2_ta"  height="20" selectable="true" backgroundAlpha="0.0" borderColor="#000000"  width="200"  x="10" y="240"/>
        <mx:TextArea id="adress_line1_ta" height="20"   selectable="true" backgroundAlpha="0.0" borderColor="#000000"  width="200" y="212" x="10"/>
        <mx:TextArea id="mobile_ta" height="20" selectable="true" backgroundAlpha="0.0" borderColor="#000000" width="200"  x="289" y="40"  textAlign="right"/>
        <mx:TextArea id="fax_ta"  height="20"  selectable="true" backgroundAlpha="0.0" borderColor="#000000" width="200" y="68" x="289"  textAlign="right"/>
        <mx:TextArea id="email_ta" height="20"  selectable="true" backgroundAlpha="0.0" borderColor="#000000" width="200" x="289" y="268" textAlign="right"/>
        </mx:Canvas>
</mx:Canvas>

<mx:ControlBar horizontalAlign="center">
<mx:HSlider id="slider"
width="400"
minimum="1"
maximum="100"
labels="['0%','100%']"
values="[50]" 
tickInterval="10"
snapInterval="1" 
liveDragging="true" 
change="changeZoom(event)"
 dataTipFormatFunction="myDataTipFunc" />

</mx:ControlBar>

</mx:Panel>

"

الرجاء المساعدة. يرجع الفضل في ذلك مسبقا.

هل كانت مفيدة؟

المحلول

وسوف لا يكون لديك هذه المشكلة إذا بدلا من تركز قماش زوومابلي، وكنت إظهاره في احداثيات في أعلى الجزء الأيسر من الأم.

وبدلا من ذلك يمكن حساب إحداثيات اللازمة، استنادا إلى حجم الأم، وعدم السماح لهم قطرة أقل من 0.

وفيما يلي التعليمات البرمجية التي سوف تساعد على:

private function calculateCoordinates() : void
{
    var x : Number = (canvas.width - layout_cnv.width) / 2;
    x = x < 0 ? 0 : x;
    var y : Number = (canvas.height - layout_cnv.height) / 2;
    y = y < 0 ? 0 : y;
    layout_cnv.move(x, y);
}

وكل ما عليك القيام به هو إضافة هذا الأسلوب لطلبك و

this.callLater(calculateCoordinates);

وفي نهاية أساليب changeZoom وadjustDefaultZoom الخاص بك. أيضا إزالة خصائص محاذاة من layout_cnv.

نصائح أخرى

وأخذت بعض الوقت لهذا الرقم واحد. يبدو أنه منذ كنت تستخدم verticalCenter ومركز الأفقي قماش يجري رسمها خارج منطقة للعرض. عند تشغيل بزر الماوس الأيمن فوق وحدد "عرض رسم المناطق" ثم يمكنك أن ترى بوضوح أن قماش خارج المنطقة.

وبمجرد إزالة مركز verticalCenter والأفقي فإنه يبدو أن العمل (رؤية كل من قماش أثناء التمرير.)

وعلى صعيد آخر وأنا لا أرى لماذا تريد اثنين من قماش بنفس لوحة مع أي شيء بينهما. ربما هذا كان مجرد على سبيل المثال الخاص بك.

وحظا سعيدا

و// تعريف متغير

[Bindable]
public var myborderColor: ColorPicker = new ColorPicker();

private function init():void
{
myborderColor:.selectedColor = Color.WHITE ;

... .... في وظيفة أخرى تغيير لون

myborderColor:.selectedColor = Color.RED ;

mx:TextInput id=”myText” backgroundColor=”{numcasoborderColor.selectedColor}”
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top