Just discovered this one today - NeoSwiff can do automatic resizing / layout of controls whenever the content pane is resized. It's very simple to set up and use. Here's a quick example:
Anchoring example. Resize the window to see some of the buttons expand / resize, and note that some buttons keep their size but change locations. This is all done with Anchoring (and Docking support is there as well, just not demonstrated in this example).
I created this example with SharpDevelop. First, I made a new Windows application and started up a form in design mode. I dragged a few buttons onto the form and set their "Anchor" properties to demonstrate the dynamic layout / resizing of the components. See MSDN for more about Anchoring Controls on Windows Forms.
I took the code from SharpDevelop and pasted it into the standalone NeoSwiff IDE, hit compile, and got a Flash application that looked and behaved exactly like the Windows counterpart created in SharpDevelop.
This is just sick (you know, pimp, killa, swell, whatever). The code is reproduced in its entirety below in the extended entry. Again, mind you, I didn't type any of this code, but rather it was created for me at design time in SharpDevelop, so I don't want to hear any "the code looks ugly" remarks. NeoSwiff compiled it all without issue (other than having to remove the string[] args from the Main entry point).
Have fun with this. Layout / resizing code is the worst thing I had to do in Flash, and it looks like NeoSwiff takes care of it all behind the scenes for you. Rock! \m/
/*
* Created by SharpDevelop.
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections;
namespace SampleWinForm
{
///
/// Description of MainForm.
///
public class MainForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button5;
private System.Windows.Forms.Button button4;
private System.Windows.Forms.Button button9;
private System.Windows.Forms.Button button8;
public MainForm()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
}
[STAThread]
public static void Main()
{
Application.Run(new MainForm());
}
#region Windows Forms Designer generated code
///
/// This method is required for Windows Forms designer support.
/// Do not change the method contents inside the source code editor. The Forms designer might
/// not be able to load this method if it was changed manually.
///
private void InitializeComponent() {
this.button8 = new System.Windows.Forms.Button();
this.button9 = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button();
this.button7 = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button8
//
this.button8.Location = new System.Drawing.Point(8, 8);
this.button8.Name = "button8";
this.button8.TabIndex = 7;
this.button8.Text = "TL";
//
// button9
//
this.button9.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.button9.Location = new System.Drawing.Point(216, 8);
this.button9.Name = "button9";
this.button9.TabIndex = 8;
this.button9.Text = "TR";
//
// button4
//
this.button4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.button4.Location = new System.Drawing.Point(112, 8);
this.button4.Name = "button4";
this.button4.TabIndex = 3;
this.button4.Text = "T";
//
// button5
//
this.button5.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.button5.Location = new System.Drawing.Point(112, 232);
this.button5.Name = "button5";
this.button5.TabIndex = 4;
this.button5.Text = "B";
//
// button6
//
this.button6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.button6.Location = new System.Drawing.Point(208, 232);
this.button6.Name = "button6";
this.button6.TabIndex = 5;
this.button6.Text = "BR";
//
// button7
//
this.button7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.button7.Location = new System.Drawing.Point(8, 232);
this.button7.Name = "button7";
this.button7.TabIndex = 6;
this.button7.Text = "BL";
//
// button1
//
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.button1.Location = new System.Drawing.Point(8, 120);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "L";
//
// button2
//
this.button2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right)));
this.button2.Location = new System.Drawing.Point(208, 120);
this.button2.Name = "button2";
this.button2.TabIndex = 1;
this.button2.Text = "R";
//
// button3
//
this.button3.Anchor = System.Windows.Forms.AnchorStyles.None;
this.button3.Location = new System.Drawing.Point(112, 120);
this.button3.Name = "button3";
this.button3.TabIndex = 2;
this.button3.Text = "C";
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button9);
this.Controls.Add(this.button8);
this.Controls.Add(this.button7);
this.Controls.Add(this.button6);
this.Controls.Add(this.button5);
this.Controls.Add(this.button4);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Name = "MainForm";
this.Text = "MainForm";
this.ResumeLayout(false);
}
#endregion
}
}

thats tha shizznit!
Lemme help you out...
Say it with me now: "NeoSwiff's workflow is straight-bangin'!"
Couldn't have put it better XL.
Is Neoswiff free or once the 1.0 version is released we`ll have to purchase it ??
firdosh
NeoSwiff is in beta right now, but when it's officially released it will be a commercial product. The beta downloads are set to expire after a certain period of time, but you can try it now for free.
Cool, nice to see 'the other' C# tool coming along too ; ).
Just curious, but why did you need to take out the string[] args?
NeoSwiff doesn't allow the main method to have string arguments as a parameter. I'm sure they could add it if they wanted to, but for now the way to get FlashVars from a .swf movie using NeoSwiff is the following:
string someParam = (string) System.AppDomain.CurrentDomain.Parameters["someParam"];
Layout code is all good and nice, but what you guys really need is a debugger.
Hi Darron
how does neoswiff translate C# to swf?
can't get my head around what its doing, at an overview sort of level
guess you could decompile to AS? - would it mimic the class structure you had in C#?
cheers
Rob
I notice it doesn't use the TabIndex settings specified in the code either - in fact I couldn't tab to any of the buttons at all.
@Rob - NeoSwiff converts C# code into SWF bytecode (the same way that MM's ActionScript compiler converts AS code into SWF bytecode). You can *try* to decompile the generated bytecode in AS, but you'll find that the NeoSwiff compiler does a lot of optimizations and naturally obfusates the code, so it makes it very hard to decompile.
@Scott - it does use the TabIndex settings correctly. Make sure you slick inside of the movie to give focus, and you'll notice that you can tab between the buttons in the order specified in the code.
Hi,
I am trying to call swf file from asp page. I am encoding the data and passing it to flash as flashvars. In Neoswiff, I am not able to get the urlencoded data from AppDomain.CurrentDomain.Parameters collection. It misses the chars %...% from the encoded content. For normal chars, it works properly. Any suggestions please.
Yes I also faces the same problem.
I think the commandline is not parsed properly.This can affect localization of Neoswift application and this problem requires an urgent workaround!!!!!!!!!!